SBP Blog

iOS SDK: insights - Part 1

Jan 14, 2014 by Adrian

iOS Software Development KitAs of October 22, 2013, the App Store reached the 1 million apps milestone, which is quite an impressive achievement. Most of these apps have been developed with the help of the iOS SDK, the software development kit developed by Apple Inc., which provides the necessary tools and frameworks for developers. More precisely:

The iOS SDK was launched in March 6, 2008 (known as iPhone SDK), and contains the tools and resources for developing native iOS apps, by using the Objective-C programming language. Actually, the iOS architecture can be regarded as a set of layers (don't think of cake layers :) ): the top layers have a high level of abstraction, while the lower ones are closer to the hardware. So let's have a taste:

In this first part I'll try to highlight the high-abstraction layers from the iOS SDK, which contain the frameworks that are most used by iOS developers and with the most notable impact upon users.

Cocoa Touch Layer

Cocoa Touch contains key features for developing iOS apps and it has a Model-View-Controller (MVC) software architecture. The frameworks found in Cocoa Touch define the appearance of the apps and provide support for technologies, such as: touch-based input, multitasking, Apple push notification service, gesture recognizers and so on.

The most important part of Cocoa Touch is the UIKit framework, which the iOS developer uses for creating and managing the iOS apps user interface. This layer contains classes like: UIAttachmentBehavior, UICollisionBehavior, UIPushBehavior.

Another important part of the chocolate Cocoa Touch Layer is Multitasking - which manages the states of the apps. Because the applications are designated for a mobile device, they must be built respecting the battery life and performance balance. So Multitasking allows apps to continue running in the background, while others are started, and in the same time preserving the battery life.
Below are the possible transitions for an app:

  -  App starts and enters Not running state -> didFinishLaunchingWithOptions is called
  -  App enters Active state -> applicationDidBecomeActive is called
  -  App becomes inactive and enters Inactive state -> applicationDidEnterBackground is called
  -  App is set to be closed after 5 seconds of inactivity and it enters Suspended state -> endBackgroundTask is called
Other features from this layer are: accelerometer support, view hierarchy, localization and camera support.

Media Layer

Rich graphics, audio and video are handled using the technologies from the Media layer.
This layer contains frameworks for graphics, audio and video - ome of the most important frameworks are:

  - Core Graphics Framework: The iOS Core Graphics Framework (also known as the Quartz 2D API) provides a lightweight rendering engine
  - Quartz Core Framework: The Quartz Core framework provides the animation and visual effects capabilities which are used by the UIKit framework
  -  Core Animation: It enhances the animation experience of the apps

There are other frameworks, such as: Core Image Framework, Core Audio Framework and Core Text Framework etc., which can be used to enrich the overall experience of the apps. Apple is recommending developers to use higher level frameworks because of their level of abstraction, however lower levels can come in handy if a greater control of the mobile device is needed.

So this is all for Part 1, in Part 2 I'll continue presenting the 2 foundation layers on which most of the Cocoa Touch Layer and Media Layer frameworks are based upon.

Tags: iOS  OS  Programming 


Harry Palms commented on 2/3/2014 8:11:02 AM

Who cares about iOS. It's locked down. Apple bans apps and content. It's closed source. Apple steals 30% from all devs. Boycott fucking Apple!!! Support Android or lose all digital freesdom.

Your Comment: