ARC下OC物件與CF物件的橋接(__bridge)

weixin_34185364發表於2015-10-21

__bridge只做OC和CF物件之間的型別轉換不涉及物件所有權的轉化;

__bridge_transfer:用在將CF物件轉換成OC物件時,並且將CF物件的所有權交給OC物件,此時ARC就能自動管理該記憶體了。作用同"CFBridgeTransfer()"

__bridge_retained:用在將OC物件轉換成CF物件,並且將OC物件的所有權交給CF物件來管理,作用同"CFBridgingRetain() "。此時我們要在使用完CF物件後用CFRelease將其手動釋放。

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

CFURLRef  urlRef = (__bridge_retained CFURLRef)url;

CFRelease(urlRef);

相關文章