Core Foundation 和 Foundation之间的桥接

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之间的桥接)