在CoreFoundation框架和Foundation框架中有大量的可互换使用的数据类型。这意味着你可以使用相同的数据类型,作为CoreFoundation框架方法调用或Objective-C消息的参数或接收者。这种在CoreFoundation框架和Foundation框架之间交换使用数据类型的技术就叫 Toll-Free Bridging。
#if __has_feature(objc_arc)
// After using a CFBridgingRetain on an NSObject, thecaller must take responsibility for calling CFRelease at anappropriate time.
NS_INLINE CF_RETURNS_RETAINEDCFTypeRefCFBridgingRetain(id X) {
}
NS_INLINE idCFBridgingRelease(CFTypeRefCF_CONSUMED X) {
}
#else
// This function is intended for use while converting toARC mode only.
NS_INLINE CF_RETURNS_RETAINED CFTypeRefCFBridgingRetain(id X) {
}
// This function is intended for use while converting toARC mode only.
NS_INLINE idCFBridgingRelease(CFTypeRef CF_CONSUMED X) {
}
#endif
并不是多有的CF对象都支持 Toll-FreeBridging!
以下是支持该技术的类型表。
Core Foundation type | Foundation class | Availability |
---|---|---|
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
|
| OS X |
联系客服