2 daffodilgirl DaffodilGirl 于 2013.08.27 13:46 提问

修复ARC错误的方法选择

转换工程到ARC ,结果这行代码报错:

_font = CTFontCreateWithName((CFStringRef)_fontName, fontSize, NULL);

其中 _fontName是NSString,错误信息是:

Cast of Objective-C pointer type 'NSString *' to C pointer type 'CFStringRef' (aka 'const struct __CFString *') requires a bridged cast

我找到了两种解决方法:
第一种:Use __bridge to convert directly (no change in ownership)

第二种:Use CFBridgingRetain call to make an ARC object available as a +1 'CFStringRef' (aka 'const struct __CFString *')

不知道那种比较好?

1个回答

abcdeFGh_xyz
abcdeFGh_xyz   2013.08.27 14:23
已采纳

没必要修改_fontName的所属关系,用这个就行

_font = CTFontCreateWithName((__bridge CFStringRef)_fontName, fontSize, NULL);
flyingcut
flyingcut 因为这里没有保留这个指针,不会再次使用了。
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片