第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来实现。

后续没看懂

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容