Core Foundation 和 Foundation之间的桥

作者: GavinKang | 来源:发表于2017-11-28 23:36 被阅读39次

    Core Foundation 和 Foundation之间的转换方式有三种,分别是:__bridge,__bridge_retained,__bridge_transfer,这三种在使用上的区别为:

    __bridge:可以在不改变所有权的情况下,将对像的框架类型进行转换,所以在使用的时候,注意内存泄漏和悬挂指针的问题
    __bridge_retained:可以将 Foundation 框架数据类型对像转换为 Core Foundation 框架数据类型对像,并从ARC接管对像的所有权,这样就可以手动管理直接桥接数据的生命周期
    __bridge_transfer:可以将 Core Foundation 框架数据类型对像转换为 Foundation 框架数据类型对像,并且会将对像的所有权交给ARC管理

    使用桥接转换标记的语法

    (桥接转换标记 目的数据类型)变量名 ,eg:

    //Core Foundation 转 Foundation
    CFStringRef cfStr = CFStringCreateWithCString(NULL, "kang", kCFStringEncodingASCII);
     NSArray * tempArray = [NSArray arrayWithObject: (__bridge_transfer NSString *)cfStr];
    

    相关文章

      网友评论

        本文标题:Core Foundation 和 Foundation之间的桥

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