iOS Frameworks

This appendix contains information about the frameworks of iOS. These frameworks provide the interfaces you need to write software for the platform. Where applicable, the tables in this appendix list any key prefixes used by the classes, methods, functions, types, or constants of the framework. Avoid using any of the specified prefixes in your own code.

Device Frameworks

Table B-1 describes the frameworks available in iOS-based devices. You can find these frameworks in the <Xcode.app>Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/<iOS_SDK>/System/Library/Frameworks directory, where <Xcode.app> is the path to your Xcode app and <iOS_SDK> is the specific SDK version you are targeting. The "First available” column lists the iOS version in which the framework first appeared.

Table B-1  Device frameworks

Name

First available

Prefixes

Description

Accelerate.framework

4.0

cblas, vDSP

Contains accelerated math and DSP functions. See “Accelerate Framework.”

Accounts.framework

5.0

AC

Contains interfaces for managing access to a user’s system accounts. See “Accounts Framework.”

AddressBook.framework

2.0

AB

Contains functions for accessing the user’s contacts database directly. See “Address Book Framework.”

AddressBookUI.framework

2.0

AB

Contains classes for displaying the system-defined people picker and editor interfaces. See “Address Book UI Framework.”

AdSupport.framework

6.0

AS

Contains a class for gathering analytics. See “Ad Support Framework.”

AssetsLibrary.framework

4.0

AL

Contains classes for accessing the user’s photos and videos. See “Assets Library Framework.”

AudioToolbox.framework

2.0

AU, Audio

Contains the interfaces for handling audio stream data and for playing and recording audio. See “Core Audio.”

AudioUnit.framework

2.0

AU, Audio

Contains the interfaces for loading and using audio units. See “Core Audio.”

AVFoundation.framework

2.2

AV

Contains Objective-C interfaces for playing and recording audio and video. See “AV Foundation Framework.”

CFNetwork.framework

2.0

CF

Contains interfaces for accessing the network via Wi-Fi and cellular radios. See “CFNetwork Framework.”

CoreAudio.framework

2.0

Audio

Provides the data types used throughout Core Audio. See “Core Audio.”

CoreBluetooth.framework

5.0

CB

Provides access to low-power Bluetooth hardware. See “Core Bluetooth Framework.”

CoreData.framework

3.0

NS

Contains interfaces for managing your application’s data model. See “Core Data Framework.”

CoreFoundation.framework

2.0

CF

Provides fundamental software services, including abstractions for common data types, string utilities, collection utilities, resource management, and preferences. See “Core Foundation Framework.”

CoreGraphics.framework

2.0

CG

Contains the interfaces for Quartz 2D. See “Core Graphics Framework.”

CoreImage.framework

5.0

CI

Contains interfaces for manipulating video and still images. See “Core Image Framework.”

CoreLocation.framework

2.0

CL

Contains the interfaces for determining a user’s location. See “Core Location Framework.”

CoreMedia.framework

4.0

CM

Contains low-level routines for manipulating audio and video. See “Core Media Framework.”

CoreMIDI.framework

4.2

MIDI

Contains low-level routines for handling MIDI data. See “Core Audio.”

CoreMotion.framework

4.0

CM

Contains interfaces for accessing accelerometer and gyro data. See “Core Motion Framework.”

CoreTelephony.framework

4.0

CT

Contains routines for accessing telephony-related information. See “Core Telephony Framework.”

CoreText.framework

3.2

CT

Contains a text layout and rendering engine. See “Core Text Framework.”

CoreVideo.framework

4.0

CV

Contains low-level routines for manipulating audio and video. Do not use this framework directly.

EventKit.framework

4.0

EK

Contains interfaces for accessing a user’s calendar event data. See “Event Kit Framework.”

EventKitUI.framework

4.0

EK

Contains classes for displaying the standard system calendar interfaces. See “Event Kit UI Framework.”

ExternalAccessory.framework

3.0

EA

Contains interfaces for communicating with attached hardware accessories. See “External Accessory Framework.”

Foundation.framework

2.0

NS

Contains interfaces for managing strings, collections, and other low-level data types. See “Foundation Framework.”

GameController.framework

7.0

GC

Contains interfaces for communicating with game-related hardware. See “Game Controller Framework.”

GameKit.framework

3.0

GK

Contains interfaces for managing peer-to-peer connectivity. See “Game Kit Framework.”

GLKit.framework

5.0

GLK

Contains Objective-C utility classes for building complex OpenGL ES applications. See “GLKit Framework.”

GSS.framework

5.0

gss

Provides a standard set of security-related services.

iAd.framework

4.0

AD

Contains classes for displaying advertisements in your application. See “iAd Framework.”

ImageIO.framework

4.0

CG

Contains classes for reading and writing image data. See “Image I/O Framework.”

IOKit.framework

2.0

N/A

Contains interfaces used by the device. Do not use this framework directly.

JavaScriptCore

7.0

JS

Contains Objective-C wrappers for evaluating JavaScript code and parsing JSON. See “JavaScript Core Framework.”

MapKit.framework

3.0

MK

Contains classes for embedding a map interface into your application and for reverse-geocoding coordinates. See “Map Kit Framework.”

MediaAccessibility.framework

7.0

MA

Manages the presentation of closed-caption content in media files. See “Media Accessibility Framework.”

MediaPlayer.framework

2.0

MP

Contains interfaces for playing full-screen video. See “Media Player Framework.”

MediaToolbox.framework

6.0

MT

Contains interfaces for playing audio content.

MessageUI.framework

3.0

MF

Contains interfaces for composing and queuing email messages. See “Message UI Framework.”

MobileCoreServices.framework

3.0

UT

Defines the uniform type identifiers (UTIs) supported by the system. See “Mobile Core Services Framework.”

MultipeerConnectivity.framework

7.0

MC

Provides interfaces for implementing peer-to-peer networking between devices. See “Multipeer Connectivity Framework.”

NewsstandKit.framework

5.0

NK

Provides interfaces for downloading magazine and newspaper content in the background. See “Newsstand Kit Framework.”

OpenAL.framework

2.0

AL

Contains the interfaces for OpenAL, a cross-platform positional audio library. See “OpenAL Framework.”

OpenGLES.framework

2.0

EAGL, GL

Contains the interfaces for OpenGL ES, which is an embedded version of the OpenGL cross-platform 2D and 3D graphics rendering library. See “OpenGL ES Framework.”

PassKit.framework

6.0

PK

Contains interfaces for creating digital passes to replace things like tickets, boarding passes, member cards, and more. See “Pass Kit Framework.”

QuartzCore.framework

2.0

CA

Contains the Core Animation interfaces. See “Quartz Core Framework.”

QuickLook.framework

4.0

QL

Contains interfaces for previewing files. See “Quick Look Framework.”

SafariServices.framework

7.0

SS

Supports the creation of reading list items in Safari. See “Safari Services Framework.”

Security.framework

2.0

CSSM, Sec

Contains interfaces for managing certificates, public and private keys, and trust policies. See “Security Framework.”

Social.framework

6.0

SL

Contains interfaces for interacting with social media accounts. See “Social Framework.”

SpriteKit.framework

7.0

SK

Facilitates the creation of sprite-based animations and rendering. See “Sprite Kit Framework.”

StoreKit.framework

3.0

SK

Contains interfaces for handling the financial transactions associated with in-app purchases. See “Store Kit Framework.”

SystemConfiguration.framework

2.0

SC

Contains interfaces for determining the network configuration of a device. See “System Configuration Framework.”

Twitter.framework

5.0

TW

Contains interfaces for sending tweets via the Twitter service. See “Twitter Framework.”

UIKit.framework

2.0

UI

Contains classes and methods for the iOS application user interface layer. See “UIKit Framework.”

VideoToolbox.framework

6.0

N/A

Contains interfaces used by the device. Do not include this framework directly.

Simulator Frameworks

Although you should always target the device frameworks when writing your code, you might need to compile your code specially for Simulator during testing. The frameworks available on the device and in Simulator are mostly identical, but there are a handful of differences. For example, Simulator uses several OS X frameworks as part of its own implementation. In addition, the exact interfaces available for a device framework and a Simulator framework may differ slightly because of system limitations.

For a list of the specific behavior differences between devices and iOS Simulator, see iOS Simulator User Guide.

System Libraries

Note that some specialty libraries at the Core OS and Core Services level are not packaged as frameworks. Instead, iOS includes many dynamic libraries in the /usr/lib directory of the system. Dynamic shared libraries are identified by their .dylib extension. Header files for the libraries are located in the /usr/include directory.

Each version of the iOS SDK includes a local copy of the dynamic shared libraries that are installed with the system. These copies are installed on your development system so that you can link to them from your Xcode projects. To see the list of libraries for a particular version of iOS, look in <Xcode.app>/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/<iOS_SDK>/usr/lib, where <Xcode.app> is the path to your Xcode app and <iOS_SDK> is the specific SDK version you are targeting. For example, the shared libraries for the iOS 7.0 SDK would be located in the /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/lib directory, with the corresponding headers in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include.

iOS uses symbolic links to point to the current version of most libraries. When linking to a dynamic shared library, use the symbolic link instead of a link to a specific version of the library. Library versions may change in future versions of iOS; if your software is linked to a specific version, that version might not always be available on the user’s system.