ARC中NSString *與CFStringRef的相互轉(zhuǎn)換

首先看一下典型的NSString與CFStringRef的相互轉(zhuǎn)換

// CFStringRef to NSString *
NSString *yourFriendlyNSString = (__bridge NSString *)yourFriendlyCFString;

// NSString * to CFStringRef
CFStringRef yourFriendlyCFString = (__bridge CFStringRef)yourFriendlyNSString;

上面出現(xiàn)了一個關(guān)鍵字 __bridge 碍脏,這個關(guān)鍵字便是整個轉(zhuǎn)換的關(guān)鍵梭依。Apple官方對于 __bridge 的解釋如下:

**__bridge** transfers a pointer between Objective-C and Core Foundation with no transfer of ownership.

**__bridge_retained** or **CFBridgingRetain** casts an Objective-C pointer to a Core Foundation pointer and also transfers ownership to you. You are responsible for calling CFRelease or a related function to relinquish ownership of the object.

**__bridge_transfer** or **CFBridgingRelease** moves a non-Objective-C pointer to Objective-C and also transfers ownership to ARC. ARC is responsible for relinquishing ownership of the object.

上面這些話總結(jié)起來就是:

__bridge 用于Objective-C和Core Foundation指針之間的轉(zhuǎn)換,這種轉(zhuǎn)換不會更換對象的所有權(quán)(ownership)典尾。
__bridge_retained 或 CFBridgeRetain 用于從Objective-C到Core Foundation的指針轉(zhuǎn)換役拴,并且會將對象的所有權(quán)(ownership)轉(zhuǎn)移,所以你需要在不再使用該對象的時候調(diào)用CFRelease方法來解除引用钾埂。
__bridge_transfer 或 CFBridgeRelease 用于將非Objective-C指針轉(zhuǎn)換為Objective-C指針河闰,對象的所有權(quán)(ownership)會交給ARC,這時你無須擔(dān)心對象何時釋放褥紫,交給ARC去做就好了姜性。
為什么在使用__bridge_retained進(jìn)行轉(zhuǎn)換時需要自己調(diào)用CFRelease來釋放對象,其實(shí)原因很簡單:Core Foundation的對象在ARC的管轄范圍之內(nèi)髓考。

下面是示例代碼:

// Don't transfer ownership. You won't have to call `CFRelease`
CFStringRef str =(__bridge CFStringRef)string;
// Transfer ownership (i.e. get ARC out of the way). The object is now yours and you must call `CFRelease` when you're done with it
CFStringRef str =(__bridge_retained CFStringRef)string; // you will have to call `CFRelease`

// Don't transfer ownership. ARC stays out of the way, and you must call `CFRelease` on `str` if appropriate (depending on how the `CFString` was created)
NSString*string =(__bridge NSString*)str;
// Transfer ownership to ARC. ARC kicks in and it's now in charge of releasing the string object. You won't have to explicitly call `CFRelease` on `str`
NSString*string =(__bridge_transfer NSString*)str;

原文: http://www.outflush.com/nsstring-pointer-and-cfstringref-conversion-in-arc/

參考:http://blog.csdn.net/fightingbull/article/details/8098133

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末部念,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子氨菇,更是在濱河造成了極大的恐慌儡炼,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件查蓉,死亡現(xiàn)場離奇詭異乌询,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)豌研,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門妹田,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鹃共,你說我怎么就攤上這事鬼佣。” “怎么了及汉?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵沮趣,是天一觀的道長。 經(jīng)常有香客問我坷随,道長房铭,這世上最難降的妖魔是什么驻龟? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮缸匪,結(jié)果婚禮上翁狐,老公的妹妹穿的比我還像新娘。我一直安慰自己凌蔬,他們只是感情好露懒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著砂心,像睡著了一般懈词。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辩诞,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天坎弯,我揣著相機(jī)與錄音,去河邊找鬼译暂。 笑死抠忘,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的外永。 我是一名探鬼主播崎脉,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼伯顶!你這毒婦竟也來了囚灼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤祭衩,失蹤者是張志新(化名)和其女友劉穎啦撮,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汪厨,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年愉择,在試婚紗的時候發(fā)現(xiàn)自己被綠了劫乱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡锥涕,死狀恐怖衷戈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情层坠,我是刑警寧澤殖妇,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站破花,受9級特大地震影響谦趣,放射性物質(zhì)發(fā)生泄漏疲吸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一前鹅、第九天 我趴在偏房一處隱蔽的房頂上張望摘悴。 院中可真熱鬧,春花似錦舰绘、人聲如沸蹂喻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽口四。三九已至,卻和暖如春秦陋,著一層夾襖步出監(jiān)牢的瞬間蔓彩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工踱侣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粪小,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓抡句,卻偏偏與公主長得像探膊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子待榔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容