About the iOS Technologies
iOS is the operating system that runs on iPhone, iPod touch, and iPad devices. The operating system manages the device hardware and provides the technologies required to implement native apps. The operating system also ships with various system apps, such as Phone, Mail, and Safari, that provide standard system services to the user.
The iOS Software Development Kit (SDK) contains the tools and interfaces needed to develop, install, run, and test native apps that appear on an iOS device’s Home screen. Native apps are built using the iOS system frameworks and Objective-C language and run directly on iOS. Unlike web apps, native apps are installed physically on a device and are therefore always available to the user, even when the device is in Airplane mode. They reside next to other system apps and both the app and any user data is synced to the user’s computer through iTunes.
At a Glance
The iOS SDK provides the resources you need to develop native iOS apps. Therefore, understanding a little about the technologies and tools that make up this SDK can help you make better choices about how to design and implement your apps.
The iOS Architecture is Layered
At the highest level, iOS acts as an intermediary between the underlying hardware and the apps that appear on the screen. The apps you create rarely talk to the underlying hardware directly. Instead, apps communicate with the hardware through a set of well-defined system interfaces that protect your app from hardware changes. This abstraction makes it easy to write apps that work consistently on devices with different hardware capabilities.
The implementation of iOS technologies can also be viewed as a set of layers, which are shown in Figure I-1. At the lower layers of the system are the fundamental services and technologies on which all apps rely; higher-level layers contain more sophisticated services and technologies.
As you write your code, you should prefer the use of higher-level frameworks over lower-level frameworks whenever possible. The higher-level frameworks are there to provide object-oriented abstractions for lower-level constructs. These abstractions generally make it much easier to write code because they reduce the amount of code you have to write and encapsulate potentially complex features, such as sockets and threads. Although they abstract out lower-level technologies, they do not mask those technologies from you. The lower-level frameworks are still available for developers who prefer to use them or who want to use aspects of those frameworks that are not exposed by the higher layers.
The iOS Technologies Are Packaged as Frameworks
Apple delivers most of its system interfaces in special packages called frameworks. A framework is a directory that contains a dynamic shared library and the resources (such as header files, images, helper apps, and so on) needed to support that library. To use frameworks, you link them into your app project just as you would any other shared library. Linking them to your project gives you access to the features of the framework and also lets the development tools know where to find the header files and other framework resources.
iOS and OS X Share Many of the Same Frameworks
If you are an existing Cocoa developer, writing iOS apps should feel familiar. Many of the technologies found in OS X can also be found in iOS. The biggest differences between the two platforms occur at the user interface level but even then there are similarities in how you present and manage your app’s interface. As a result, porting apps from OS X to iOS is possible with a little bit of work.
You Use Xcode to Develop Apps
Xcode is the development environment you use to create, test, debug, and tune your apps. Xcode comprises the Xcode app, which is a wrapper for all of the other tools you need to build your apps, including Instruments and iOS Simulator. You use Xcode to write your code and then run your apps in iOS Simulator or directly on an attached iOS device. After debugging your app, you can use Xcode to launch Instruments and profile your app’s performance.
Development on an actual device requires signing up for Apple’s paid iOS Developer Program and configuring a device for development purposes. You can obtain a copy of Xcode and the iOS SDK and you find out more about the iOS Developer Program at the iOS Dev Center.
The Developer Library is There to Help You
The iOS Developer Library is an important resource for you to use during development. It contains reference information for the various technologies. It also contains programming guides, release notes, tech notes, sample code, and many other resources offering tips and guidance about the best way to create your apps.
You can access the iOS Developer Library from the Apple Developer website or from Xcode. In Xcode, choosing Help > Developer Documentation displays the Xcode documentation window, which is the central resource for accessing information about iOS development. You can use this window to browse the documentation, perform searches, and bookmark documents you may want to refer to later.
How to Use This Document
iOS Technology Overview is an introductory guide for anyone who is new to the iOS platform. It provides an overview of the technologies and tools that have an impact on the development process and provides links to relevant documents and other sources of information. You should use this document to do the following:
Orient yourself to the iOS platform.
Learn about iOS software technologies, why you might want to use them, and when.
Learn about development opportunities for the platform.
Get tips and guidelines on how to move to iOS from other platforms.
Find key documents relating to the technologies you are interested in.
This document does not provide information about user-level features that have no impact on the software development process, nor does this document list the hardware capabilities of specific iOS devices.
New developers should find this document useful for getting familiar with iOS. Experienced developers can use it as a road map for exploring specific technologies and development techniques.
If you are new to iOS development, this book provides only an overview of the system. To learn more about how to develop iOS apps, you should read the following documents:
Start Developing iOS Apps Today provides a guided tour of the development process, starting with how to set up your system and ending with the process of how to submit apps to the App Store. If you are new to developing iOS apps, this is another good starting point for exploring iOS app development.
iOS Human Interface Guidelines provides guidance and information about how to design your app’s user interface.
App Distribution Guide describes the iOS development process from the perspective of the tools. This document covers the configuration and provisioning of devices for development and covers the use of Xcode (and other tools) for building, running, and testing your software.
© 2012 Apple Inc. All Rights Reserved. (Last updated: 2012-09-19)