第49条:对自定义其内存管理语义的collection使用无缝桥接

使用“无缝桥接”技术,可以在定义于Foundation框架中的Objective-C类和定义于CoreFoundation框架中的C数据结构之间互相转换。

NSArray *anNSArray = @[@"1", @"2", @"3", @"4"];
CFArrayRef aCFArray = (__bridge CFArrayRef)anNSArray;
NSLog(@"Size of array = %li",CFArrayGetCount(aCFArray));

转换操作中的__bridge告诉ARC如何处理所涉及的Objective-C对象。__bridge本身的意思是:ARC仍然具备这个Objective-C对象的所有权。
而__bridge_retained则与之相反,意味着ARC将交出对象的所有权。若是前面那段代码改用它来实现,那么用完数组之后就要加上CFRelease(aCFArray)以释放其内存。与之相似,反向转换可通过__bridge_transfer来实现。

后续没看懂

你可能感兴趣的:(第49条:对自定义其内存管理语义的collection使用无缝桥接)