There are a number of data types in the Core Foundation framework and the Foundation framework that can be used interchangeably. This capability, called toll-free bridging, means that you can use the same data type as the parameter to a Core Foundation function call or as the receiver of an Objective-C message. For example, NSLocale
(see NSLocale Class Reference) is interchangeable with its Core Foundation counterpart, CFLocale (see CFLocale Reference). Therefore, in a method where you see an NSLocale *
parameter, you can pass a CFLocaleRef
, and in a function where you see a CFLocaleRef
parameter, you can pass an NSLocale
instance. You cast one type to the other to suppress compiler warnings, as illustrated in the following example.
Data types that can be used interchangeably between Core Foundation and Foundation
Core Foundation type
Foundation class
Availability
CFArrayRef
NSArray
OS X v10.0
CFAttributedStringRef
NSAttributedString
OS X v10.4
CFCalendarRef
NSCalendar
OS X v10.4
CFCharacterSetRef
NSCharacterSet
OS X v10.0
CFDataRef
NSData
OS X v10.0
CFDateRef
NSDate
OS X v10.0
CFDictionaryRef
NSDictionary
OS X v10.0
CFErrorRef
NSError
OS X v10.5
CFLocaleRef
NSLocale
OS X v10.4
CFMutableArrayRef
NSMutableArray
OS X v10.0
CFMutableAttributedStringRef
NSMutableAttributedString
OS X v10.4
CFMutableCharacterSetRef
NSMutableCharacterSet
OS X v10.0
CFMutableDataRef
NSMutableData
OS X v10.0
CFMutableDictionaryRef
NSMutableDictionary
OS X v10.0
CFMutableSetRef
NSMutableSet
OS X v10.0
CFMutableStringRef
NSMutableString
OS X v10.0
CFNumberRef
NSNumber
OS X v10.0
CFReadStreamRef
NSInputStream
OS X v10.0
CFRunLoopTimerRef
NSTimer
OS X v10.0
CFSetRef
NSSet
OS X v10.0
CFStringRef
NSString
OS X v10.0
CFTimeZoneRef
NSTimeZone
OS X v10.0
CFURLRef
NSURL
OS X v10.0
CFWriteStreamRef
NSOutputStream
OS X v10.0