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];
网友评论