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