OC对象 vs CF对象

原创
2018/07/13 12:51
阅读数 406

OC对象 vs CF对象

在ARC场景下,对象所有权没有转换

使用__bridge关键字即可实现CF对象和OC对象之间的自由转换

  • OC对象转换为CF对象

调用CF框架的方法,所有权没有改变还是属于OC对象,对象的生命周期还是有ARC自动管理,不需要手动释放

  • CF对象转换为OC对象

调用OC对象的方法,所有权没有改变还是属于CF对象所拥有,所以需要调用CFRelease来完成对象的释放

对象所有权的转换

  • CF对象转换为OC对象

需要释放CF对象的所有权,把所有权交给OC对象管理,所以需要使用桥接转换函数CFBridgingRelease()实现所有权的转换,也可以使用__bridge_transfer 关键字实现这个所有权的转换过程

  • OC对象转换为CF对象

OC对象会自动释放,CF对象需要保留该对象,所以需要使用桥接转换函数CFBridgingRetain()实现所有权的保留,防止OC对象释放使用CF对象出现悬垂指针,也可以使用__bridge_retained 关键字实现这个所有权的转换过程

展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部