无缝桥接可以实现Foundation框架中的类和CoreFoundation框架中的数据结构之间的互相转换。
下面是一个简单的无缝桥接:
NSArray *aNSArray = @[@1,@2,@3];
CFArrayRef aCFArray = (__bridge CFArrayRef)aNSArray;
CFRelease(aCFArray);
进行转换操作的修饰符共有3个:
OC对象 -> CF
__bridge // ARC不交出对象的所有权
__bridge_retained // ARC交出对象的所有权,手动管理内存
CF -> OC对象
__bridge_transfer // ARC获得对象的所有权,自动管理内存
手动管理内存的对象需要用CFRetain与CFRelease来保留或释放。
在CoreFoundation层面创建collection时,可以指定许多回调函数,这些函数表示此collection应如何处理其元素。然后,可运用无缝桥接桥接技术,将其转换成具备特殊内存管理语义的Objective-C collection。
网友评论