OC对象 vs CF对象

本文详细介绍了Objective-C (OC) 对象与Core Foundation (CF) 对象之间的转换方法,包括如何在ARC环境下进行对象所有权的转换,以及使用__bridge、CFBridgingRelease等关键字和技术实现对象间的相互转换。

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 关键字实现这个所有权的转换过程

转载于:https://my.oschina.net/FEEDFACF/blog/1845893

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值