iOS System Frameworks

2019-08-13

#### [Apple System Frameworks](https://developer.apple.com/documentation/)

Apple System Frameworks

iOS System Layers

  • Cocoa Touch Layer
  • Media Layer
  • Core Services Layer
  • Core OS Layer

Details of Each Layer


  • Cocoa Touch Layer
    • UIKit (UI-related)
    • EventKit (calendar events and reminders)
    • Notification Center
    • MapKit (map display)
    • Address Book (contacts)
    • iAd (advertising)
    • Message UI (email and SMS display)
    • PushKit (new push mechanism in iOS 8)

  • Media Layer

    • Graphics engines

      • Core Graphics
      • Core Image
      • Core Animation
      • OpenGL ES
    • Audio engines

      • Core Audio
      • AV Foundation
      • OpenAL
    • Video engines

      • AV Foundation
      • Core Media)

  • Core Services Layer
    • CFNetwork (network access)
    • CoreData (data storage)
    • CoreLocation (location services)
    • CoreMotion (accelerometer and gyroscope)
    • Foundation (fundamentals such as NSString)
    • Webkit (browser engine)
    • JavaScript (JavaScript engine)

  • Core OS Layer
    • OS kernel services (BSD sockets, I/O access, memory allocation, file system, math computations, etc.)
    • Local authentication (fingerprint verification, etc.)
    • Security (interfaces for managing certificates, public keys, secret keys, etc.)
    • Accelerate (performs math, large-number, and DSP computations; these interfaces match iOS device hardware)

Several Key Frameworks

  1. Foundation

    • Provides basic system services for all applications
    • UIKit in your applications is built on top of the Foundation framework.
    • The Foundation framework is an Objective-C wrapper around many of the features of the Core Foundation framework.
    • With Foundation you can:
      • Create and manage collections, such as arrays and dictionaries
      • Access images and other resources stored in the app
      • Create and manage strings
      • Post and receive notifications
      • Create date and time objects
      • Automatically discover devices on an IP network
      • Work with URL streams
      • Run asynchronous code
  2. UIKit

    • The framework provides classes for building touch-based user interfaces
    • All iOS apps are based on UIKit; you cannot take your app out of this framework.
    • UIKit provides mechanisms for drawing on screen, capturing events, and creating standard interface elements.
    • UIKit also organizes complex projects by managing the components displayed on screen.
    • With UIKit you can:
      • Build and manage your user interface
      • Handle touch and motion-based events
      • Present text and web content
      • Optimize your app for multitasking
      • Create custom interface elements
  3. CoreData

    • The framework manages your application’s data model
    • Core Data provides object management; with CoreData you can create model objects and manage them.
    • You manage the relationships between these objects and change the data.
    • CoreData’s built-in SQLite technology manages data efficiently.
    • With Core Data you can:
      • Store and fetch objects in the store
      • Provide basic undo/redo
      • Automatically validate property values
      • Filter, group, and optimize data in memory
      • Manage results in table views with [NSFetchedResultsController]
      • Support document-based applications
  4. The Core Graphics framework helps you create graphics

    • High-quality graphics matter to every iOS app.
    • The simplest and fastest way to create graphics in iOS is to use the pre-rendered views and controls provided by the UIKit framework and let UIKit and iOS handle the drawing.
    • When you need to create complex graphics, Core Graphics offers lower-level libraries to help.
    • With Core Graphics you can:
      • Create path-based drawing
      • Anti-aliased rendering
      • Add gradients, images, and colors
      • Use coordinate-space transformations.
      • Create, display, and analyze PDF documents
  5. Core Animation lets you create advanced animations and visual effects

    • UIKit provides animations built on top of Core Animation.
    • If you need capabilities beyond what UIKit offers, you can use Core Animation directly.
    • The Core Animation interfaces are part of the QuartzCore framework.
    • With Core Animation you can create nested objects and manipulate, rotate, scale, and transform them.
    • With Core Animation you can create dynamic user interfaces without resorting to lower-level graphics APIs such as OpenGL ES.
    • With Core Animation you can:
      • Create custom animations
      • Add timing functions and graphics
      • Support frame animations
      • Specify graphical layout constraints.
      • Group multiple-layer changes into anatomic update.
  6. The OpenGL ES framework provides 2D and 3D drawing tools

    • OpenGL ES supports 2D and 3D drawing; Apple’s OpenGL ES implementation leverages the hardware to deliver high-speed, full-screen, game-style applications.
    • With OpenGL ES you can:
      • Create 2D and 3D graphics
      • Create more complex graphics, such as data visualization, flight simulators, or video games
      • Access the underlying graphics hardware

These make up the skeleton of iOS/macOS the architecture at its highest level.