About Developing for Mac

The OS X operating system combines a stable core with advanced technologies to help you deliver world-class products on the Mac platform. Knowing what these technologies are, and how to use them, can help streamline your development process, while giving you access to key OS X features.

../art/MacBookProDesktop_2x.png

At a Glance

This guide introduces you to the range of possibilities for developing Mac software, describes the many technologies you can use for software development, and points you to sources of information about those technologies. It does not describe user-level system features or features that have no impact on software development.

OS X Has a Layered Architecture with Key Technologies in Each Layer

It’s helpful to view the implementation of OS X as a set of layers. The lower layers of the system provide the fundamental services on which all software relies. Subsequent layers contain more sophisticated services and technologies that build on (or complement) the layers below.

Figure I-1  Layers of OS X
Layers of OS X

The lower the layer a technology is in, the more specialized are the services it provides. Generally, technologies in higher layers incorporate lower-level technologies to provide common app behaviors. A good rule of thumb is to use the highest-level programming interface that meets the goals of your app. Here is a brief summary of the layers of OS X.

You Can Create Many Different Kinds of Software for Mac

Using the developer tools and system frameworks, you can develop a wide variety of software for Mac, including the following:

When Porting a Cocoa Touch App, Be Aware of API Similarities and Differences

The technology stacks on which Cocoa and Cocoa Touch apps are based have many similarities. Some system frameworks are identical (or nearly identical) in each platform, including Foundation, Core Data, and AV Foundation. This commonality of API makes some migration tasks—for example, porting the data model of your Cocoa Touch app—easy.

Other migration tasks are more challenging because they depend on frameworks that reflect the differences between the platforms. For example, porting controller objects and revising the user interface are more demanding tasks because they depend on AppKit and UIKit, which are the primary app frameworks in the Cocoa and CocoaTouch layers, respectively.

See Also

Apple provides developer tools and additional information that support your development efforts.

Xcode, Apple’s integrated development environment, helps you design, create, debug, and optimize your software. You can download Xcode from the Mac App Store.

For an overview of the developer tools for OS X, see the Xcode Apple Developer webpage. For an overview Xcode functionality, read Xcode Overview.

The OS X Developer Library contains the documentation, sample code, tutorials, and other information you need to write OS X apps. You can access the OS X Developer Library from the Apple Developer website or from Xcode. In Xcode, choose Help > Documentation and API Reference to view documents and other resources in the Organizer window.

In addition to the OS X Developer Library, there are other sources of information on developing different types of software for Mac: