在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
【Objective-C指针与CoreFoundation指针之间的转换】 ARC仅管理Objective-C指针(retain、release、autorelease),不管理CoreFoundation指针,CF指针由人工管理,手动的CFRetain和CFRelease来管理,注,CF中没有autorelease。 CocoaFoundation指针与CoreFoundation指针转换,需要考虑的是所指向对象所有权的归属。ARC提供了3个修饰符来管理。 1. __bridge,什么也不做,仅仅是转换。此种情况下: i). 从Cocoa转换到Core,需要人工CFRetain,否则,Cocoa指针释放后, 传出去的指针则无效。 ii). 从Core转换到Cocoa,需要人工CFRelease,否则,Cocoa指针释放后,对象引用计数仍为1,不会被销毁。 2. __bridge_retained or CFBridgingRetain,arc把对象所有权转出,需CoreFoundation处理。 3. __bridge_transfer or CFBridgingRelease,CoreFoundation把对象所有权交给arc,由arc自动处理。 【示例】 |
请发表评论