__bridge,__bridge_transfer,__bridge_retained
什么时候用到__bridge关键字
在ARC模式中,如果需要进行Core Foundation与Objective-C类型之间的转换。需要用到__bridge桥接。
1 | id obj = [[NSObject alloc] init]; |
将Objective-C的对象类型用 __bridge 转换为 void* 类型和使用 __unsafe_unretained 关键字修饰的变量是一样的。
__bridge_retained 从 Objective-C -> Core Foundation
1 | id obj = [[NSObject alloc] init]; |
相当于下面的实现
1 | id obj = [[NSObject alloc] init]; |
所以用完了这个对象后,需要CFRelease一下对象
__bridge_transfer 从 Core Foundation -> Objective-C
1 | id obj = (__bridge_transfer )p; |
相当于
1 | id obj = (id)p; |
ARC会管理内存