Core Foundation 和 Foundation之間的轉(zhuǎn)換方式有三種,分別是:__bridge
,__bridge_retained
,__bridge_transfer
,這三種在使用上的區(qū)別為:
__bridge
:可以在不改變所有權(quán)的情況下,將對(duì)像的框架類型進(jìn)行轉(zhuǎn)換,所以在使用的時(shí)候,注意內(nèi)存泄漏和懸掛指針的問題
__bridge_retained
:可以將 Foundation 框架數(shù)據(jù)類型對(duì)像轉(zhuǎn)換為 Core Foundation 框架數(shù)據(jù)類型對(duì)像,并從ARC接管對(duì)像的所有權(quán),這樣就可以手動(dòng)管理直接橋接數(shù)據(jù)的生命周期
__bridge_transfer
:可以將 Core Foundation 框架數(shù)據(jù)類型對(duì)像轉(zhuǎn)換為 Foundation 框架數(shù)據(jù)類型對(duì)像,并且會(huì)將對(duì)像的所有權(quán)交給ARC管理
使用橋接轉(zhuǎn)換標(biāo)記的語(yǔ)法
(橋接轉(zhuǎn)換標(biāo)記 目的數(shù)據(jù)類型)變量名 ,eg:
//Core Foundation 轉(zhuǎn) Foundation
CFStringRef cfStr = CFStringCreateWithCString(NULL, "kang", kCFStringEncodingASCII);
NSArray * tempArray = [NSArray arrayWithObject: (__bridge_transfer NSString *)cfStr];