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 A-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 A-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.

AVKit.framework

8.0

AV

Contains Objective-C interfaces for playing and recording audio and video. See AVKit Framework.

CFNetwork.framework

2.0

CF

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

CloudKit.framework

8.0

CK

Contains Objective-C interfaces for fetching and saving iCloud data. See CloudKit.

CoreAudio.framework

2.0

Audio

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

CoreAudioKit.framework

8.0

CA

Provides the data types used throughout Core Audio. See CoreAudioKit Framework.

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 EventKit Framework.

EventKitUI.framework

4.0

EK

Contains classes for displaying the standard system calendar interfaces. See EventKit 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 GameKit 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.

HealthKit.framework

8.0

HK

Provides a way to store health-related information for the user. See HealthKit Framework.

HomeKit.framework

8.0

HM

Provides services for communicating with integrated household devices. See HomeKit Framework.

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.framework

7.0

JS

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

LocalAuthentication.framework

8.0

LA

Provides support for authenticating the user via Touch ID. See Local Authentication Framework.

MapKit.framework

3.0

MK

Contains classes for embedding a map interface into your application and for reverse-geocoding coordinates. See MapKit 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.

Metal.framework

8.0

MTL

Provides a low-overhead graphics rendering engine for apps. See Metal 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.

NetworkExtension.framework

8.0

NE

Provides interfaces for configuring and controlling VPN support. See Network Extension Framework.

NewsstandKit.framework

5.0

NK

Provides interfaces for downloading magazine and newspaper content in the background. See NewsstandKit Framework.

NotificationCenter.framework

8.0

NK

Provides interfaces for implementing notification center widgets. See Notification Center 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 PassKit Framework.

Photos.framework

8.0

PH

Contains interfaces for accessing and manipulating photo and videos. See Photos Framework.

PhotosUI.framework

8.0

PH

Contains interfaces for creating app extensions that manipulate photo and video assets. See Photos UI Framework.

PushKit.framework

8.0

PK

Provides a way for VoIP apps to register with a device. See PushKit 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.

SceneKit.framework

8.0

SCN

Provides interfaces for creating 3D graphics. See SceneKit 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 SpriteKit Framework.

StoreKit.framework

3.0

SK

Contains interfaces for handling the financial transactions associated with in-app purchases. See StoreKit 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.

WebKit.framework

8.0

WK

Provides support for integrating web content into your apps. See WebKit Framework.

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 8.0 SDK would be located in the /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/usr/lib directory, with the corresponding headers in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.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.