Mac OS Frameworks
There are more than a 100 frameworks in the Mac OS Frameworks Library.
The following is a high level overview of some of the critical and important frameworks. This page will be updated regularly, till all the available frameworks has been summarized.
This summary document has been recreated after reading through framework documents available at https://developer.apple.com/devcenter/mac/
The most important framework in Mac OSX . Consists of libraries and APIs and runtime environment that forms the development layer for all Mac OSX Application.
Using Cocoa framework and xCode IDE is the best way to create Mac OSX Applications.
The Cocoa Framework consists of three main frameworks
- Foundation Framework
- Application Kit Framework
- CoreData Framework
The most widely used design pattern in Cocoa is MVC where M-Model, V-View and C-Controller
- Models are used for holding data
- Views are used for visual representation of data in form of tables, text fields etc
- Controllers are used for linking the model to the view.
Defines the base layer of Objective-C classes.
Provides a small set of basic utility classes.
Support Unicode strings, object persistence, and object distribution.
Provide a level of OS independence, to enhance portability across iOS and Mac OS apps.
Includes the root object class, classes representing basic data types such as strings and byte arrays, collection classes for storing other objects, classes representing system information such as dates, and classes representing communication ports.
AppKit also called as Application Kit Framework contains objects needed to implement graphical, user interface such as windows, buttons, text fields, Tables etc.
Application Kit Framework allows developers to use Interface Builder for creating Outlets and Actions or alternatively create and control objects through code.
Classes (Such as NSView or NSTableView etc) defined in Application Kit Framework can be subclassed and custom behavior can be written
Supports Object Graph management and persistence for foundation and Cocoa Application. Part of the Cocoa Framework and is one of the important framework used for creating Cocoa Applications. Provides means to open a file containing an archive of objects and a reference to atleast one root object
Core Animation is framework to support the following
- Graphics rendering
- Animation to animate views and other visual elements in a Cocoa Application
- Handles the drawing part of each animation and developers are expected to provide the start and end point of the animation.
- Coreanimation is tightly coupled with the Appkit.
C-based APIs that is based on Quartz advanced drawing engine. Provides low-level lightweight 2D rendering
- Color Management
- Gradients and Shadings
- Image Data Management
- Image Creation
- PDF Document Creation etc
Used in determining the current location of a device. Has a geocoder object to convert latitude and longitude to a user friendly description of that location such as Street, City and Country etc
Core Media provides a low level C interface for managing and playing audio-visual media in your application
Has APIs for handling fonts, character to glyph conversion.
Supports AAT (Apple Advanced Typography) text features that help access common OpenType Layout Tags
Has low-level APIs used for interaction with the hardware. Helps communicate with the audio driver plug-ins. Interacts with the external devices using Hardware Abstraction layer
Used for creating a Cocoa User Interface for Audio Units
Provides fundamental software services useful to application services and environments.
Provides abstraction to common datatypes. Facilitates internationalization, XML property lists, URL Resource access
Provides APIs for communicating with Musical Instrument Digital Interface devices
Contains interfaces for creating MIDI drivers to be used by the system.
Contains interfaces of the Device Abstraction Layer (DAL) used for creating plug-ins that can access media hardware.
Partitions the processing into discrete steps making it simpler for developers to access and manipulate individual frames without having to worry about translating between data types such as QuickTime. It also provides buffer and buffer pool support for Core Media.
Contains Objective-C APIs for querying AirPort interfaces and choosing networks.
C based application programming interface for the Mac Operating System
Carbon is no more supported in OS X 10.8
All applications developed under Carbon has or will eventually move to Cocoa Frameworks.
Provides access to the Address Book Database (The Database that stores Mac User’s contacts).
AddressBook framework has APIs for accessing contacts and making changes to the Addressbook database such as adding a new contact from code.
Webkit framework helps display web content inside a Cocoa Application using WebViews. The Webkit framework helps implement web browser features in a Cocoa Application
Provides access to user accounts stored in the Accounts Database. Account stores the login credentials of a particular service (e.g: Twitter) which can be used for authentication for the services.
Note: Developers are not responsible for storing account logins rather the end user can grant access for the app to use their login credentials
Audio Video Bridging Framework
Used for enhancing quality of service and guaranteed latency and bandwidth for media streams over an AVB network. Provides access to entity discovery and control protocols over Ethernet network
Event Kit Framework
Access to users calendar, reminders events.
Adding new events to users calendar
Prior to 10.8 CalendarStore framework was used for creating events and accessing event from iCal
Supports the following
1. Friends, Anonymous players
2. Multiplayer game support
3. Leaderboards- Storing and retrieving players score from Game Center
4. Tracking Achievements in a game
5. Peer-to-peer connectivity
6. Ingame voice chats
More details on Game Kit programming is available at
Provides library to create an OpenGL application. Supports texture data and shader effects.
AGL or Apple Graphics library is the OpenGL implementation in Mac OSX. Using AGL rendering contexts can be created and destroyed.
One of the framework to play and create time-based audio visual media. Provides an Objective C interface. Videos can be captured realtime and manipulated.
To be used in computational intensive applications. The accelerate framework contains a set of high performance vector accelerated libraries. Using the framework developers can perform vector based operations without using the low-level vector instructions.
Accelerate framework has support for the following
- Image processing
- Digital signal processing
- Linear Algebra
The AppKitScripting framework is deprecated and developer.apple.com suggests to use AppKit framework instead.
Contains interfaces to create AppleScript Plugins
Contains objective C extensions for creating AppleScript plug-ins
Using Automator framework developers can run a workflow in applications. Actions can be created which when loaded and run performs a specific task.
Workflow is a sequence of actions. In workflows output of one action is fed as input to the next action.
Has APIs for sending requests to supported social networking services. Has APIs for retrieving information to integrate users social network account in a custom app.
Can create a network session, get the activity feed for a user, make a new post on behalf of a user, Has templates for creating HTTP requests etc
Has APIs for video compression and decompression. Has APIs for conversions between raster image formats stored in Core Video Pixel buffers.
Abstracts the vector processing capability for executing appropriate instructions for processor available at runtime. By using this framework the code does not have to deal with differences in vector instruction available for different architectures