Toll free bridges
As a newcomer to iPhone development and Objective-C in general over the last few weeks I have come across numerous mentions of 'Toll free bridges' between CF and NS frameworks.
One particular example would be CFStream and NSStream.
Does a resource exists documenting all of these bridges and how to use them ? Is it just as simple as casting from an object of one type to another ?
I ask as at the moment I am using NSStream calls that are not stricly allowed within the iPhone SDK and understand that I should be using CFStream calls.
EDIT: A useful article about how TFB works
Toll-free bridging means that the data structures are interchangeable. It is just as simple as casting — that's the "toll-free" part. Anyplace you can use the type on one side of the bridge, you can use the other. So, for example, you can create a CFString and then send NSString messages to it, or you can create an NSArray and pass the array to CFArray functions.
Apple keeps a list of the supported toll-free bridged types on its site.
Toll-free-bridging, although a funny name, is a very cool feature of the CoreFoundation classes. Essentially it boils down to the fact that you can cast between CoreFoundation and NextStep classes of the same name (CFString<->NSString, CFData<->NSData, CFDictionary<->NSDictionary... just to name some of the most commonly used.)