__bridge,__bridge_retained,__bridge_transfer

最近遇到類型轉換須要添加__bridge等開始不是很理解,後面查詢資料才知道在CFObject 與 NSObject 之間轉換時,ARC是不能管理Core Foundation object的生命週期。對象

在CFObject 與 NSObject 之間轉換時,須要用到__bridge,__bridge_retained,__bridge_transfer等關鍵字。下面簡單介紹下這三個關鍵字:生命週期

__bridge只作類型轉換,可是不修改對象(內存)管理權;內存


__bridge_retained(也可使用CFBridgingRetain)將Objective-C的對象轉換爲  Foundation的對象,同時將對象(內存)的管理權交給咱們,後續須要使用CFRelease或者相關方法來釋放對象;io

__bridge_transfer(也可使用CFBridgingRelease)將Core Foundation的對象轉換爲Objective-C的對象,同時將對象(內存)的管理權交給ARC。object

本站公眾號
   歡迎關注本站公眾號,獲取更多信息