Core OS Layer
The Core OS layer contains the low-level features that most other technologies are built upon. Even if you do not use these technologies directly in your applications, they are most likely being used by other frameworks. And in situations where you need to explicitly deal with security or communicating with an external hardware accessory, you do so using the frameworks in this layer.
Introduced in iOS 4.0, the Accelerate framework (
Accelerate.framework) contains interfaces for performing DSP, linear algebra, and image-processing calculations. The advantage of using this framework over writing your own versions of these interfaces is that they are optimized for all of the hardware configurations present in iOS-based devices. Therefore, you can write your code once and be assured that it runs efficiently on all devices.
For more information about the functions of the Accelerate framework, see Accelerate Framework Reference.
Core Bluetooth Framework
The Core Bluetooth framework (
CoreBluetooth.framework) allows developers to interact specifically with Bluetooth Low-Energy ("LE") accessories. The Objective-C interfaces of this framework allow you to scan for LE accessories, connect and disconnect to ones you find, read and write attributes within a service, register for service and attribute change notifications, and much more.
For more information about the interfaces of the Core Bluetooth framework, see Core Bluetooth Framework Reference.
External Accessory Framework
Introduced in iOS 3.0, the External Accessory framework (
ExternalAccessory.framework) provides support for communicating with hardware accessories attached to an iOS-based device. Accessories can be connected through the 30-pin dock connector of a device or wirelessly using Bluetooth. The External Accessory framework provides a way for you to get information about each available accessory and to initiate communications sessions. After that, you are free to manipulate the accessory directly using any commands it supports.
For more information about how to use this framework, see External Accessory Programming Topics. For information about developing accessories for iOS-based devices, go to http://developer.apple.com.
Generic Security Services Framework
Introduced in iOS 5, the Generic Security Services framework (
GSS.framework) provides a standard set of security-related services to iOS applications. The basic interfaces of this framework are specified in IETF RFC 2743 and RFC 4401. In addition to offering the standard interfaces, iOS includes some additions for managing credentials that are not specified by the standard but that are required by many applications.
For information about the interfaces of the GSS framework, see the header files.
In addition to its built-in security features, iOS also provides an explicit Security framework (
Security.framework) that you can use to guarantee the security of the data your application manages. This framework provides interfaces for managing certificates, public and private keys, and trust policies. It supports the generation of cryptographically secure pseudorandom numbers. It also supports the storage of certificates and cryptographic keys in the keychain, which is a secure repository for sensitive user data.
The Common Crypto library provides additional support for symmetric encryption, HMAC, and digests. The digests feature provides functions that are essentially compatible with those in the OpenSSL library, which is not available in iOS.
In iOS 3.0 and later, it is possible for you to share keychain items among multiple applications you create. Sharing items makes it easier for applications in the same suite to interoperate more smoothly. For example, you could use this feature to share user passwords or other elements that might otherwise require you to prompt the user from each application separately. To share data between applications, you must configure the Xcode project of each application with the proper entitlements.
For information about the functions and features associated with the Security framework, see Security Framework Reference. For information about how to access the keychain, see Keychain Services Programming Guide. For information about setting up entitlements in your Xcode projects, see Tools Workflow Guide for iOS. For information about the entitlements you can configure, see the description for the
SecItemAdd function in Keychain Services Reference.
The system level encompasses the kernel environment, drivers, and low-level UNIX interfaces of the operating system. The kernel itself is based on Mach and is responsible for every aspect of the operating system. It manages the virtual memory system, threads, file system, network, and interprocess communication. The drivers at this layer also provide the interface between the available hardware and system frameworks. For security purposes, access to the kernel and drivers is restricted to a limited set of system frameworks and applications.
iOS provides a set of interfaces for accessing many low-level features of the operating system. Your application accesses these features through the
LibSystem library. The interfaces are C-based and provide support for the following:
Threading (POSIX threads)
Networking (BSD sockets)
Bonjour and DNS services
Header files for many Core OS technologies are located in the <iOS_SDK>
/usr/include/ directory, where <iOS_SDK> is the path to the target SDK in your Xcode installation directory. For information about the functions associated with these technologies, see iOS Manual Pages.
© 2012 Apple Inc. All Rights Reserved. (Last updated: 2012-09-19)