【发布时间】:2014-07-12 00:05:30
【问题描述】:
假设一个方法通过指针返回CFErrorRef。这个返回的错误可能是NULL。那么仍然执行__bridge_transfer 是否安全,或者我应该检查NULL。
例如
CFErrorRef cfError;
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, &cfError);
NSError *error = (__bridge_transfer NSError *)cfError;
我在文档中没有看到任何提及这一点,CFRelease 文档特别指出 This value must not be NULL.
https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFTypeRef/Reference/reference.html#//apple_ref/c/func/CFRelease
【问题讨论】:
-
NULL 不是一个对象,它是一个指针值。 NSNull 是一个 iOS 对象,可以用来表示 NULL/nil 值(就像 NSNumber 可以表示一个 int 一样)。
-
是的,但对象引用
cfError是NULL。所以我的问题成立。
标签: ios objective-c core-foundation toll-free-bridging