经常看到toll free bridged,只是大概知道是类型可以相互转换。为了更好的了解,在网上找到了这个资料。保存下来,方便以后查看
http://www.cocoadev.com/index.pl?HowToCreateTollFreeBridgedClass
The following classes are toll-free bridged:
http://www.cocoadev.com/index.pl?TollFreeBridged
- NSArray = CFArray
- NSMutableArray = CFMutableArray?
- NSCalendar = CFCalendar?
- NSCharacterSet = CFCharacterSet?
- NSMutableCharacterSet? = CFMutableCharacterSet?
- NSData = CFData?
- NSMutableData = CFMutableData?
- NSDate = CFDate?
- NSDictionary = CFDictionary
- NSMutableDictionary = CFMutableDictionary?
- NSNumber = CFNumber
- NSTimer = CFRunLoopTimer?
- NSSet = CFSet?
- NSMutableSet = CFMutableSet?
- NSString = CFString
- NSMutableString = CFMutableString?
- NSUrL = CFURL
- NSTimeZone? = CFTimeZone?
- NSInputStream? = CFReadStream?
- NSOutputStream? = CFWriteStream?
- Disc Recording
- NSAttributedString = CFAttributedString?
- NSMutableAttributedString = CFMutableAttributedString?
The following classes are not toll-free bridged:
- NSBundle and CFBundle?
- NSHost and CFHost
- NSRunLoop and CFRunLoop?
- NSNotificationCenter and CFNotificationCenter?
- NSSocket? and CFSocket
----------------------------------------------------------------------------------------------------------------------------------------------------
TollFreeBridging is what allows you to take CoreFoundation types and typecast them to Cocoa types (and vice versa).
So, if you have to call a CoreFoundation function that takes a CFString, but you have an NSString, you can just pass it your NSString with:
CFStringRef myCFString = (CFStringRef)someNSString;
And if you need to get an NSString from a CFString, you can do this:
NSString* myNSString = (NSString*)someCFString;
see also: HowToCreateTollFreeBridgedClass
See which classes are TollFreeBridged.