The nice thing about the Mac OS X layered design is that writing software in one layer does not preclude you from using technologies in other layers. Mac OS X technologies were built to interoperate with each other whenever possible. In cases where a given technology is unsuitable, you can always use a different technology that is suitable. For example, Cocoa applications can freely use Carbon frameworks and BSD function calls. Similarly, Carbon applications can use Objective-C based frameworks in addition to other object-oriented and C-based frameworks. Of course, in the case of Carbon, you might have to set up some Cocoa-specific structures before creating any Cocoa objects, but doing so is relatively trivial.
Although you may feel more comfortable sticking with your chosen development environment, there are advantages to straying outside of that environment. You might find that technologies in other layers offer better performance or more flexibility. For example, using the POSIX interfaces in the Darwin layer might make it easier to port your application to other platforms that conform to the POSIX specification. Having access to technologies in other layers gives you options in your development process. You can pick and choose the technologies that best suit your development needs.
Last updated: 2007-10-31