大佬教程收集整理的这篇文章主要介绍了objective-c – bridged cast:__bridge_transfer vs __bridge with synthetic setter,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@property (nonatomic,retain) NSString *userName; ... @synthesize userName = _userName; ...
情况1:
NSString *name = (__bridge_transfer NSString *)ABRecordCopyCompositename(person); self.userName = name;
案例2:
self.userName = (__bridge_transfer NSString *)ABRecordCopyCompositename(person);
人的类型是ABRecordRef.
在案例1中,ARC将释放本地变量名(根据我的理解,如果我错了,请纠正我),然而在CASE 2中会发生什么?我应该在CASE 2中使用__bridge还是不应该使用CASE 2?在__bridge_transfer或__bridge的CASE 2中如何平衡引用计数?
在CASE 2中,使用__bridge_transfer,ARC将释放对象(该对象作为参数传递给setter(void)setUserName:(NSString *)userName)?
因此,在这两种情况下都必须使用__bridge_transfer.
一个很好的练习是通过使用__bridge而不是__bridge_transfer来引发泄漏,然后使用Xcode和instruments来尝试找到泄漏.编译器是否接收到泄漏?静态分析(Project – > AnalyzE)是否接收到泄漏?仪器是否接收泄漏?如果是这样,你会知道如何检查__bridge_transfer是否解决了这个问题.
以上是大佬教程为你收集整理的objective-c – bridged cast:__bridge_transfer vs __bridge with synthetic setter全部内容,希望文章能够帮你解决objective-c – bridged cast:__bridge_transfer vs __bridge with synthetic setter所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。