CFBridgingRetain和CFBridgingRelease
在Core Foundation框架和Foundation框架中有大量的可互换使用的数据类型。
这意味着你可以使用相同的数据类型,作为Core Foundation框架方法调用或Objective-C消息的参数或接收者。
这种在Core Foundation框架和Foundation框架之间交换使用数据类型的技术就叫"免费桥" (Toll-Free Bridging)。
一般我们使用CFBridgingRetain
完成对NSObject对象转为CF实例,使用CFBridgingRelease
完成CF实例转NSObject对象
CFBridgingRelease
会导致CF实例引用计数-1,例如下面例子
void RunLoopSourcePerformRoutine (void *info)
{
NSLog(@"RunLoopSourcePerformRoutine %p",info);
RunLoopSource* obj = (RunLoopSource*)CFBridgingRelease(info);
NSLog(@"RunLoopSourcePerformRoutine %@",[obj valueForKey:@"retainCount"]);
[obj sourceFired]