ARC下OC对象与CF对象的桥接(__bridge)

__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);

你可能感兴趣的:(ARC下OC对象与CF对象的桥接(__bridge))