大佬教程收集整理的这篇文章主要介绍了ios – __bridge_transfer对NULL对象有效,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
例如.
CFErrorRef cfError; ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL,&cfError); NSError *error = (__bridge_transfer NSError *)cfError;
我没有在文档和CFRelease文档中看到任何提及此@L_262_3@的具体说明此值不能为NULL.
https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFTypeRef/Reference/reference.html#//apple_ref/c/func/CFRelease
阅读有关ABAddressBookCreateWithOptions的文档.特别是,请查看the documentation错误:
这个很重要.
>没有记录成功案例中的错误值.
>错误为nil / NULL / 0(永远)未记录.
这不是学术性的.某些API历来将错误设置为无效值.想象一下,调用将CFError设置为-1.这是“有效的”,因为非NULL回复意味着你不应该解释错误,但桥接转换-1到NSError可能会崩溃.
这意味着除非ABAddressBookCreateWithOptions指示错误返回NULL,否则不得触摸cfError.
CFErrorRef cfError; NSError *error; ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL,&cfError); if (addressBookRef == NULL) { error = (__bridge_transfer NSError *)cfError; }
你没有问这个问题,但是这里还有一个问题就是,如果编译器认识到某些东西是0等效的话,甚至不需要桥接.例如,此代码将静默编译(假设_thing1和_thing2是实例变量):
- (id)bar { if (_thing1) return NO; if (_thing2) return 0; return NULL; }
这是邋code的代码,我不应该故意这样做,但要知道它干净利落地构建……这是一件好事.我遇到了由这样的事情导致的错误:
- (NSnumber *)someCalculationWithError:(NSError *)error { return 0; // meant to return @(0) }
以上是大佬教程为你收集整理的ios – __bridge_transfer对NULL对象有效全部内容,希望文章能够帮你解决ios – __bridge_transfer对NULL对象有效所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。