使用arc能帮我们减轻不少内存管理方面的负担,但是arc也有不足之处。
CFObject和NSObject之间的转换的问题,由于arc不能管理Core Foundation Object的生命周期,所以在Core Foundation 和ARC 之间,我们使用__bridge,__bridge_retainde和
__bridge_transfer三个转换关键字。
根据苹果官方的文档(https://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html):
__bridge只能做类型转换,但是不修改对象(内存)管理权;
__bridge_retained(也可以使用CFBridgingRetain) 将Objective-c对象转换为Core Foundatinon 的对象,同时将对象(内存)的管理权也交给我们,
后续需要使用CFRelease或者相关方法来释放对象;
__bridge_transfer (也可以使用CFBridgeRelease)将Core Foundation的对象转换为Objectice-c的对象,同时将对象(内存)的管理权交给ARC
.