美文网首页
第49条:对自定义其内存管理语义的collection使用无缝桥

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

作者: MrSYLong | 来源:发表于2018-10-17 22:18 被阅读7次

    无缝桥接可以实现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。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/mmsdzftx.html