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