Core Foundation 和Cocoa Framework::Foundation的轉(zhuǎn)化
用到的三個(gè)關(guān)鍵字:bridge、bridge_retained茫经、bridege_transfer
bridege:
1巷波、只做類型轉(zhuǎn)化處理,對(duì)對(duì)象的所有權(quán)不做修改(對(duì)引用計(jì)數(shù)不做處理)卸伞;
2抹镊、將Objective-C的對(duì)象類型用 __bridge 轉(zhuǎn)換為 void* 類型和使用__unsafe_unretained (ARC下的weak)關(guān)鍵字修飾的變量是一樣的。被代入對(duì)象的所有者需要明確對(duì)象生命周期的管理瞪慧,不要出現(xiàn)異常訪問的問題髓考。
bridge_retained:
1、一般常用于OC類型轉(zhuǎn)為CF類型弃酌;
2、轉(zhuǎn)化后的CF對(duì)象引用計(jì)數(shù)+1儡炼;
(需要添加CFRelease方法對(duì)CF進(jìn)行釋放)
bridege_transfer:(隱性添加strong關(guān)鍵字修飾)
1妓湘、常用于CF類型轉(zhuǎn)化為OC類型;
2乌询、轉(zhuǎn)化后自動(dòng)將CF類型引用計(jì)數(shù)-1榜贴;
(不需要調(diào)用CFRelease方法釋放CF指針)
一、需要特別明確被轉(zhuǎn)換類型是否是 ARC 管理的對(duì)象
1妹田、Core Foundation 對(duì)象類型不在 ARC 管理范疇內(nèi)
Core Foundation是C語言接口唬党,需要手動(dòng)釋放。(CFRelease)
2鬼佣、 Cocoa Framework::Foundation 對(duì)象類型(即一般使用到的Objectie-C對(duì)象類型)在 ARC 的管理范疇內(nèi)