iOS总体框架介绍和详尽说明

iOS总体框架介绍和详尽说明

  • 一、iOS是什么?
  • 二、iOS总体框架介绍和详尽说明
    • 1.iOS的框架层级
      • [1. 核心操作系统层(Core OS layer)](#1. 核心操作系统层(Core OS layer))
        • [1.1 Accelerate Framework](#1.1 Accelerate Framework)
        • [1.2 Core Bluetooth Framework](#1.2 Core Bluetooth Framework)
        • [1.3 External Accessory Framework](#1.3 External Accessory Framework)
        • [1.4 LocalAuthentication Framework](#1.4 LocalAuthentication Framework)
        • [1.5 Security Framework](#1.5 Security Framework)
        • [1.6 System Framework](#1.6 System Framework)
      • [2. 核心服务层 (Core Services Layer)](#2. 核心服务层 (Core Services Layer))
        • [2.1 Address Book Framework](#2.1 Address Book Framework)
        • [2.2 CFNetwork Framework](#2.2 CFNetwork Framework)
        • [2.3 Core Data Framework](#2.3 Core Data Framework)
          • [2.3.1 Core Data详述](#2.3.1 Core Data详述)
          • [2.3.2 Core Data Stack](#2.3.2 Core Data Stack)
            • [2.3.2.1 NSManagedObject](#2.3.2.1 NSManagedObject)
            • [2.3.2.2 NSManagedObjectModel](#2.3.2.2 NSManagedObjectModel)
            • [2.3.2.3 NSPersistentStoreCoordinator](#2.3.2.3 NSPersistentStoreCoordinator)
            • [2.3.2.4 NSManagedObjectContext](#2.3.2.4 NSManagedObjectContext)
            • [2.3.2.5 特别需要注意的点](#2.3.2.5 特别需要注意的点)
          • [2.3.3 举个例子](#2.3.3 举个例子)
            • [2.3.3.1 OC版本 Core Data stack](#2.3.3.1 OC版本 Core Data stack)
            • [2.3.3.2 Swift版本 Core Data stack](#2.3.3.2 Swift版本 Core Data stack)
            • [2.3.3.3 DEMO实现](#2.3.3.3 DEMO实现)
        • [2.4 Core Foundation Framework](#2.4 Core Foundation Framework)
        • [2.5 Core Location Framework](#2.5 Core Location Framework)
        • [2.6 Core Media Framework](#2.6 Core Media Framework)
        • [2.7 Core Telephony Framework](#2.7 Core Telephony Framework)
        • [2.8 Event Kit Framework](#2.8 Event Kit Framework)
        • [2.9 Foundation Framework](#2.9 Foundation Framework)
        • [2.10 Mobile Core Services Framework](#2.10 Mobile Core Services Framework)
        • [2.11 Quick Look Framework](#2.11 Quick Look Framework)
        • [2.12 Store Kit Framework](#2.12 Store Kit Framework)
        • [2.13 System Configuration Framework](#2.13 System Configuration Framework)
        • [2.14 Block Objects](#2.14 Block Objects)
        • [2.15 Grand Central Dispatch](#2.15 Grand Central Dispatch)
        • [2.16 In App Purchase](#2.16 In App Purchase)
        • [2.17 Location Services](#2.17 Location Services)
        • [2.18 SQLite](#2.18 SQLite)
        • [2.19 XML Support](#2.19 XML Support)
      • [3. 媒体层 (Media Layer)](#3. 媒体层 (Media Layer))
        • [3.1 Assets Library](#3.1 Assets Library)
        • [3.2 Core Audio](#3.2 Core Audio)
        • [3.3 OpenGL](#3.3 OpenGL)
        • [3.4 Audio Mixing](#3.4 Audio Mixing)
        • [3.5 Video Playback](#3.5 Video Playback)
        • [3.5 图像格式支持(JPG、PNG、TIFF)](#3.5 图像格式支持(JPG、PNG、TIFF))
        • [3.6 PDF渲染](#3.6 PDF渲染)
        • [3.7 Quartz](#3.7 Quartz)
        • [3.8 Core Graphics](#3.8 Core Graphics)
        • [3.8 Core Animation](#3.8 Core Animation)
        • [3.9 OpenGL ES](#3.9 OpenGL ES)
      • [4. 可触摸层 (Cocoa Touch Layer)](#4. 可触摸层 (Cocoa Touch Layer))
        • [4.1 Multi-Touch Events](#4.1 Multi-Touch Events)
        • [4.2 GameKit](#4.2 GameKit)
        • [4.2 Core Motion](#4.2 Core Motion)
        • [4.3 Camera](#4.3 Camera)
        • [4.4 View Hierarchy](#4.4 View Hierarchy)
        • [4.5 Localization](#4.5 Localization)
        • [4.6 Alerts](#4.6 Alerts)
        • [4.7 Web Views](#4.7 Web Views)
        • [4.8 Image Picker](#4.8 Image Picker)
        • [4.9 Multi-Touch Controls](#4.9 Multi-Touch Controls)
        • [4.10 UIKit](#4.10 UIKit)
    • 2.iOS部分框架列表(表格形式呈现)

一、iOS是什么?


1.iOS简述

iOS是由苹果公司开发的移动操作系统。

苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad上。iOS与苹果的macOS操作系统一样,属于类Unix的商业操作系统。原本这个系统名为iPhone OS,因为iPad、iPhone、iPod touch都使用iPhone OS,所以2010年苹果全球开发者大会上宣布改名为iOS。


2.iOS界面

iOS用户界面的概念基础上是能够使用多点触控直接操作。控制方法包括滑动,轻触开关及按键。系统交互包括滑动、轻按、挤压、及旋转。这样的设计使iPhone更便于使用。屏幕的底部是Dock栏 ,用户可以将经常使用的程序固定在Dock栏上。屏幕上方是状态栏。它能显示时间﹑电池电量和信号强度等信息。其余的屏幕用于显示当前的应用程序。启动iPhone应用程序的方法是在主屏幕中点击程序的图标,退出程序则是从屏幕最底部上滑(iPad可使用五指捏合手势回到主屏幕)。


二、iOS总体框架介绍和详尽说明

iOS总体框架是指在iOS操作系统下所有的软件组件和库


1.iOS的框架层级

iOS的框架层级分为四个层次,由内而外依次是:

  1. 核心操作系统层(Core OS layer)
  2. 核心服务层(Core Services layer)
  3. 媒体层(Media layer)
  4. 可触摸层(Cocoa Touch layer)

低层次框架提供iOS的基本服务和技术,高层次框架建立在低层次框架之上用来提供更加复杂的服务和技术,较高级的框架向较低级的结构提供面向对象的抽象。


1. 核心操作系统层(Core OS layer)

核心操作系统层(Core OS layer)包括Accelerate Framework、Core Bluetooth Framework、External Accessory Framework、LocalAuthentication Framework、Security Framework、System

核心操作系统层(Core OS layer)是iOS的最底层,包括OS X内核、Mach 3.0、BSD、套接字、内存管理、文件系统、电源管理等组件,以及安全性特性和能源管理系统。这个层级的组件允许iOS直接与硬件设备交互。


1.1 Accelerate Framework

Accelerate Framework可以进行大规模的数学计算和图像计算,优化为高性能和低能耗。

通过利用其向量处理能力,Accelerate在CPU上提供高性能、节能的计算。下面的加速库抽象了这种能力,使为它们编写的代码在运行时执行适当的处理器指令:

BNNS:为训练和推理而构造和运行神经网络的子程序。

vImage:广泛的图像处理功能,包括核心图形和核心视频互操作、格式转换和图像处理。

vDSP:数字信号处理函数,包括一维和二维快速傅里叶变换、双二次滤波、向量和矩阵运算、卷积和类型转换。

vForce:在向量上执行算术和超越函数的函数。

Sparse Solvers、BLAS和LAPACK:在稀疏和密集矩阵上执行线性代数的库。


1.2 Core Bluetooth Framework

CoreBluetooth.framework为 iOS 和 Mac 应用程序提供了与配备蓝牙低功耗无线技术的设备通信所需的类。例如,您的应用可以发现、搜索附近低能耗外围设备并与之交互,例如心率监测器和数字恒温器等。

从 macOS 10.9 和 iOS 6 开始,Mac 和 iOS 设备还可以作为蓝牙低功耗外围设备,向其他设备提供数据。

蓝牙低功耗无线技术基于蓝牙 4.0 规范,其中定义了一组用于在低功耗设备之间进行通信的协议。CoreBluetooth.framework是蓝牙低功耗协议栈的抽象。也就是说,它对开发人员隐藏了规范的许多底层细节,使您更容易开发与蓝牙低功耗设备交互的应用程序。

下面是一个蓝牙低功耗协议栈的描述图:

GATT:是 Generic ATtribute Profile 的首字母缩写词,它定义了两个低功耗蓝牙设备使用称为服务(CBService)和特征(CBCharacteristic)的概念来回传输数据的方式,它具有一个或多个蓝牙服务(CBService),由唯一的 id 标识区分,每个服务又包含一个或多个蓝牙特征(CBCharacteristic),每个特征也是由唯一的 id 标识区分。GATT 客户端实现了扫描正在广播的蓝牙设备,连接到选定的蓝牙外围设备,发现服务,发现特征,然后读取、写入或建立连接以接收来自特征的通知。

ATT:是Attribute Protocol 的首字母缩写词,是低功耗蓝牙协议栈中的一种协议。它定义了数据在蓝牙服务器(外设)数据库中的表示方式以及读取或写入数据的方法。例如:健身追踪器会收集有关您的步数和心率的数据。它充当服务器,保存这些数据,直到客户端智能手机请求它。该数据作为属性存储在蓝牙外设服务器上。

L2CAP:是Logical Link Control and Adaptation Protocol 的首字母缩写词,即逻辑链路控制和适配协议,是蓝牙系统中的核心协议。


1.3 External Accessory Framework

External Accessory框架是用于支持外部附加设备的框架,如耳机、控制器等。该框架提供了一组API来管理和访问这些外部设备。


1.4 LocalAuthentication Framework
1.5 Security Framework
1.6 System Framework

2. 核心服务层 (Core Services Layer)

核心服务层 (Core Services Layer)包含account、coredata、Address Book Framework、CFNetwork Framework、Core Data Framework、Core Foundation Framework、Core Location Framework、Core Media Framework、Core Telephony Framework、Event Kit Framework、Foundation Framework、Mobile Core Services Framework、Quick Look Framework、Store Kit Framework、System Configuration Framework、Block Objects、Grand Central Dispatch 、In App Purchase、Location Services、SQLite、XML Support等一些框架

核心服务层 (Core Services Layer)中,开发者可以访问到iOS的服务,例如字符串处理、集合管理、网络管理、URL处理工具、偏好设置等。


2.1 Address Book Framework
2.2 CFNetwork Framework

2.3 Core Data Framework

Core Data框架管着理应用程序数据模型

Core Data提供对象的管理,使用Core Data,你可以创建模型对象,并管理这些对象。你管理这这些对象间的联系并修改数据。Core Data提供的内建SQLlite技术可以高效的管理数据。

使用Core Data可以:

在库里存储和接收对象

提供基本的undo/redo

自动验证属性值

过滤、分组和优化内存中的数据

用[NSFetchedResultsController]管理表视图中的结果

支持基于文档的应用程序


2.3.1 Core Data详述

Core Data是苹果官方提供的一套框架,用来解决对象生命周期管理、对象关系图管理和持久化等方面相关的问题。

Core Data是模型层的技术,Core Data帮助构建代表程序状态的模型层。Core Data也是一种持久化技术,它可以将模型的状态持久化到磁盘。但它更重要的特点是:Core Data不只是一个加载和保存数据的框架,它也能处理内存中的数据,而且CoreData并不是关系型数据库。---

2.3.2 Core Data Stack

Core Data Stack是Core Data的核心部分。一个基本的Core Data栈由四个主要部分组成:

  1. 托管对象(NSManagedObject)
  2. 托管对象上下文(NSManagedObjectContext)
  3. 持久化存储协调器(NSPersistentStoreCoordinator)
  4. 以及持久化存储(NSPersistentStore)
2.3.2.1 NSManagedObject

NSManagedObject是被管理的数据记录。对应着就是数据库的一个表,在我们适用XCode编辑完数据库的表结构之后可以通过XCode->Editor->Create NSManagedObject Subclass...来创建对应表的 model

2.3.2.2 NSManagedObjectModel

管理对象模型(managed object model)代表着应用中的数据模型(data model)。虽然Core Data不是数据库,但是能够把管理对象模型(managed object model)比喻为数据库的模式,它包含了对象图形中的实体(entities),实体的属性,实体之间的关系。

NSManagedObjectModel对象能够知道在它进行初始化的时候,数据模型(data model)会加载一个或者多个数据模型文件。

2.3.2.3 NSPersistentStoreCoordinator

表示持久化存储协调者,NSPersistentStoreCoordinator的对象将持久化保存数据到磁盘并且确保持久存储(persistent store(s))和数据模型(data model)的兼容性。它是持久存储和管理对象上下文之间的协调者,同时也负责加载和缓存数据。可以说,NSPersistentStoreCoordinator是Core Data的指挥核心,虽然在Core Data stack堆栈中地位非常重要,但是我们很少直接与它进行交互,上下文已经封装了对它的调用。

2.3.2.4 NSManagedObjectContext

NSManagedObjectContext管理者一系列的模型对象,也就是NSManagedObject类的实例,即我们通常所了解的实体(Entities)。通过上下文,可以对数据记录NSManagedObject进行添加、删除、更改,记录更改后支持撤销和重做,除非你保存这些数据变化,否则持久层的东西是不会变化。

应用中很有可能存在多个NSManagedObjectContext,每一个管理对象上下文背后都将有一个持久化存储协调者作为支撑。可以认为NSManagedObjectContext为一个工作台,使用其中的模型对象进行工作:加载模型对象,改变模型对象,以及保存模型对象等一系列操作都是在工作台中进行的。当从数据持久层获取数据时,相当于把这些临时的数据拷贝写在上下文,上下文充当一个临时缓冲层,然后就可以随心所欲的修改这些值。

2.3.2.5 特别需要注意的点

NSManagedObjectContext主要是管理NSManagedObject对象

在Core Data中所做的所有的操作都是在上下文(NSManagedObjectContext)中进行的。

我们所做的任何改变将不能够影响存储在磁盘中的数据,一直到我们调用上下文的save方法进行保存。

上下文管理着管理者对象的生命周期。生命周期的管理有着强大的特征,比如反转关系,处理验证。

管理者对象如果不与上下文联系将不会存在,事实上,管理者对象和它的上下文是非常紧密的联系在一起,每一个管理者对象都有引用一个上下文,比如:let managedContext = employee.managedObjectContext

上下文拥有着自己的区域,一旦管理对象已经跟特定的上下文相关联,在对象的整个生命周期都将和相同的上下文想关联在一起!

一个应用可以使用多个上下文,这是Core Data强大的一方面.

上下文对象不是线程安全的,只能够在相同的线程让管理者对象和上下文进行交互。Apple也提出了许多的方式使上下文能够在多线程应用中进行工作。

注意Xcode10版本建立的Core Data stack如下,之前的Xcode版本创建的Core Data stack是不一样的

2.3.3 举个例子
2.3.3.1 OC版本 Core Data stack
objectivec 复制代码
#pragma mark - Core Data stack

@synthesize persistentContainer = _persistentContainer;

- (NSPersistentContainer *)persistentContainer {
    @synchronized (self) {
        if (_persistentContainer == nil) {
            _persistentContainer = [[NSPersistentContainer alloc] initWithName:@"HitList"];
            [_persistentContainer loadPersistentStoresWithCompletionHandler:^(NSPersistentStoreDescription *storeDescription, NSError *error) {
                if (error != nil) {
                    NSLog(@"Unresolved error %@, %@", error, error.userInfo);
                    abort();
                }
            }];
        }
    }
    
    return _persistentContainer;
}
2.3.3.2 Swift版本 Core Data stack
swift 复制代码
// MARK: - Core Data stack

lazy var persistentContainer: NSPersistentContainer = {
    let container = NSPersistentContainer(name: "HitList")
    container.loadPersistentStores(completionHandler: { (storeDescription, error) in
      if let error = error as NSError? {
        // 根据实际情况处理
        fatalError("Unresolved error \(error), \(error.userInfo)")
      }
    })
    return container
  }()
2.3.3.3 DEMO实现

实现目标:使用CoreData简单的存储和获取数据

使用Xcode创建新项目,记得勾选使用CoreDta,会自动生成Core Data Stack。

AppDelegate.swift中CoreDta调用栈如下

objectivec 复制代码
import UIKit
import CoreData

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  var window: UIWindow?

  private func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    return true
  }

  func applicationWillTerminate(_ application: UIApplication) {
    self.saveContext()
  }

  // MARK: - Core Data stack

  lazy var persistentContainer: NSPersistentContainer = {
    let container = NSPersistentContainer(name: "HitList")
    container.loadPersistentStores(completionHandler: { (storeDescription, error) in
      if let error = error as NSError? {
        // 根据实际情况处理
        fatalError("Unresolved error \(error), \(error.userInfo)")
      }
    })
    return container
  }()

  // MARK: - Core Data Saving support

  func saveContext () {
    let context = persistentContainer.viewContext
    if context.hasChanges {
      do {
        try context.save()
      } catch {
        // Replace this implementation with code to handle the error appropriately.
        // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
        let nserror = error as NSError
        fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
      }
    }
  }  
}

视图控制器实现部分

objectivec 复制代码
class SimpleSaveViewController: UIViewController {

    @IBOutlet weak var tableView: UITableView!
    var people: [NSManagedObject] = []     // 数据源

    override func viewDidLoad() {
        super.viewDidLoad()

        title = "The List"
        tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")

        navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add,
                                                            target: self,
                                                            action: #selector(addPerson))
    }

  override func viewWillAppear(_ animated: Bool) {//...}

  @objc func addPerson() { //... }

  func save(name: String, address: String) { //... }
}

extension SimpleSaveViewController: UITableViewDataSource {

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return people.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let person = people[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

        let name = person.value(forKey: "name") ?? "Name unknown"
        let address = person.value(forKey: "address") ?? "Address unknown"
        cell.textLabel?.text = "\(name) -- \(address)"

        return cell
    }
}

视图即将出现的时候从缓存获取数据

objectivec 复制代码
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    // 获取appDelegate
    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
            return
     }

   // 获取上下文对象
   let managedContext = appDelegate.persistentContainer.viewContext

   // 根据实体名称创建获取结果实例
   let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Person")
   do {
       // 执行获取操作
       people = try managedContext.fetch(fetchRequest)
    } catch let error as NSError {
        print("Could not fetch. \(error), \(error.userInfo)")
    }
 }

点击添加信息

objectivec 复制代码
@objc func addPerson() {
    let alert = UIAlertController(title: "New Name", message: "Add a new name", preferredStyle: .alert)

    let saveAction = UIAlertAction(title: "Save", style: .default) { [unowned self] action in
       
      guard let nameTextField = alert.textFields?.first,
                let nameToSave = nameTextField.text,
                let addressTextField = alert.textFields?[1],
                let addressToSave = addressTextField.text else {
                    return
            }

            self.save(name: nameToSave, address: addressToSave)
            self.tableView.reloadData()
        }

    let cancelAction = UIAlertAction(title: "Cancel", style: .default)

    alert.addTextField()
    alert.addTextField()

    alert.textFields?[0].placeholder = "Name"
    alert.textFields?[1].placeholder = "Address"

    alert.addAction(saveAction)
    alert.addAction(cancelAction)

    present(alert, animated: true)
 }

存储填写的信息

objectivec 复制代码
 func save(name: String, address: String) {
     guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
            return
     }

    let managedContext = appDelegate.persistentContainer.viewContext

    // 创建实体描述
    let entity = NSEntityDescription.entity(forEntityName: "Person", in: managedContext)!

    // 创建管理对象
    let person = NSManagedObject(entity: entity, insertInto: managedContext)

    // 存储值
    person.setValue(name, forKey: "name")
    person.setValue(address, forKey: "address")

     do {
          // 保存数据
          try managedContext.save()
          // 添加到数据源
          people.append(person)
        } catch let error as NSError {
            print("Could not save. \(error), \(error.userInfo)")
        }
  }

在HitList.xcdatamodeld数据模型中添加Person实体,并添加属性如下

实现效果:


2.4 Core Foundation Framework
2.5 Core Location Framework
2.6 Core Media Framework
2.7 Core Telephony Framework
2.8 Event Kit Framework

2.9 Foundation Framework

Foundation框架为所有的应用程序提供基本系统服务

你的应用程序,UIKit和其它的框架都是建立在Foundation框架上面的。Foundation框架是用Object-C对Core Foundation框架里许多特性的封装。

使用Foundation可以:

  • 创建和管理集合,比如数组和字典
  • 访问存储在应用程序里的图片和其它资源
  • 创建和管理字符串
  • 提交和接收通知
  • 创建日期和时间对象
  • 自动发现IP网络上的设备
  • 操作URL流
  • 执行异步代码

2.10 Mobile Core Services Framework
2.11 Quick Look Framework
2.12 Store Kit Framework
2.13 System Configuration Framework
2.14 Block Objects
2.15 Grand Central Dispatch
2.16 In App Purchase
2.17 Location Services
2.18 SQLite
2.19 XML Support

3. 媒体层 (Media Layer)

媒体层的组件包括Assets Library、Core Audio、CoreText、ImageIO、OpenGL、SceneKit、Audio Toolbox、Core Graphics、Audio Mixing、Video Playback、PDF渲染、Quartz、Core Animation、OpenGL ES等。

媒体层 (Media Layer)专注于媒体的处理,包括音频、视频的录制和解码,图形绘制的支持,以及基本动画效果的实现。


3.1 Assets Library
3.2 Core Audio

3.3 OpenGL

OpenGL ES框架提供2D和3D绘图工具

OpenGL ES支持2D和3D绘图,Apple的OpenGL ES实现通过硬件提供了高速的全屏游戏式的应用程序。

使用OpenGL ES可以:

创建2D和3D图形

创建更复杂的图形,比如数据虚拟化、模拟飞行,或者视频游戏

访问底层图形设备


3.4 Audio Mixing
3.5 Video Playback
3.5 图像格式支持(JPG、PNG、TIFF)
3.6 PDF渲染
3.7 Quartz

3.8 Core Graphics

Core Graphics框架帮助你创建图形

高质量的图形对于所有的iOS应用程序都是很重要的。在iOS中最简单且最快捷的创建图形的方式是使用UIKit框架提供的基于预渲染图形的视图和控件,然后让UIKit和iOS完成绘制。但是当你需要创建复杂的图形时,Core Graphics则提供了更底层的库来帮助你。

使用Core Graphics可以:

创建基于路径的绘图

抗锯齿渲染

添加梯度、图片和颜色

Use coordinate-space transformations.

创建、显示和分析PDF文档


3.8 Core Animation

Core Animation框架是用于iOS应用程序动画效果的框架,它提供了一组API用于操作视图层和动画效果。在UI界面动画处理方面,Core Animation框架比UIKit框架更为底层,但更加灵活性,可以实现更为复杂和高级的动画效果。

UIKit提供建立在Core Animation之上的动画。如果你需要比UIKit能力更高级的功能,可以直接使用Core Animation。Core Animation接口包含在Quartz Core框架里。使用Core Animation可以创建嵌套的对象,并且可以对它们操作、旋转、缩放和转换。使用Core animation,你可以创建动态的用户界面而不用使用更底层的图形API,如OpenGL ES。

使用Core Animation可以:

创建定制动画

添加定时函数和图形

支持帧动画

Specify graphical layout constraints.

Group multiple-layer changes into anatomic update.


3.9 OpenGL ES

4. 可触摸层 (Cocoa Touch Layer)

可触摸层 (Cocoa Touch Layer)包括GameKit、Multi-Touch Events、Core Motion、Camera、View Hierarchy、Localization、Alerts、Web Views、Image Picker、Multi-Touch Controls、UIKit等组件。

可触摸层 (Cocoa Touch Layer)为iOS的应用程序开发提供了实用框架,尤其是与用户界面相关的功能。Cocoa Touch层还利用了Objective-C语言,提供了集合、文件管理、网络操作等功能,而UIKit框架则提供了可视化的组件,如窗口、视图和按钮组件等。


4.1 Multi-Touch Events

4.2 GameKit

GameKit框架是用于开发iOS游戏应用程序的框架,它提供了一系列的多人游戏API,如多人游戏连接管理、匹配制度等。开发者可以利用这些API构建出各种类型的游戏应用程序。


4.2 Core Motion

Core Motion框架是用于支持移动设备的运动检测的框架,主要包括加速触发器、陀螺仪和传感器等。开发者通过使用Core Motion框架,可以轻松地检测设备的方向、速率和位置。


4.3 Camera
4.4 View Hierarchy
4.5 Localization
4.6 Alerts
4.7 Web Views
4.8 Image Picker
4.9 Multi-Touch Controls
4.10 UIKit

UIKit框架提供创建基于触摸用户界面的类

所有的iOS应用程序都基于UIKit,你不能是应用程序脱离这个框架。UIKit提供了在屏幕上绘制的机制,捕获事件,和创建通用用户界面元素。UIKit也通过管理显示在屏幕上的组件来组织复杂的项目。

使用UIKit可以:

构建和管理你的用户界面

捕获触摸和基于移动的事件

呈现文字和web内容

优化你的多任务程序

创建定制的用户界面元素

在《YouFirst iOS App Tutorial》里,你也使用到了UIKit。当你仔细查看程序是怎么运行起来的时候,你会看到UIApplicationMain函数创建一个UIApplication类的实例,这个实例会捕获进来的用户事件。你实现UITextFieldDelegate协议,然后在用户按下Done时隐藏键盘。实际上,你是在使用UIKit创建用户界面上的UITextField, UILabel,和UIButton类。

2.iOS部分框架列表(表格形式呈现)

名称 最先引入 前缀 描述
Accelerate.framework 4.0 cblas,vDSP 包含加速数学和DSP函数。请查看 加速框架 参考 。
AddressBook.framework 2.0 AB 包含直接访问用户联系人数据库的函数。请查看地址簿框架参考。
AddressBookUI.framework 2.0 AB 显示系统定义的联系人挑选界面和编辑界面的类。请查看iOS地址簿UI框架参考 。
AssetsLibrary.framework 4.0 AL 包含显示用户照片和视频的类,请查看资源库框架参考 。
AudioToolbox.framework 2.0 AU,Audio 包含处理音频流数据以及播放或录制音频的接口。请查看音频工具箱框架参考。
AudioUnit.framework 2.0 AU,Audio 包含加载并使用音频单元的接口。请查看音频单元框架参考.
AVFoundation.framework 2.2 AV 包含播放或录制音频的Objective-C接口。请查看AV Foundation框架参考.。
CFNetwork.framework 2.0 CF 包含通过WiFi或者蜂窝无线访问网络的接口。请查看CFNetwork框架参考。
CoreAudio.framework 2.0 Audio 包含Core Audio框架使用的各种数据类型。请查看Core Audio 框架参考 。
CoreData.framework 3.0 NS 包含管理应用程序数据模型的接口。请查看Core Data 框架参考 。
CoreFoundation.framework 2.0 CF 提供一些基本软件服务,包括常见数据类型抽象、字符串实用工具、群体类型实用工具、资源管理以及偏好设置。请查看rovCore Foundation框架参考。
CoreGraphics.framework 2.0 CG 包含Quartz 2D接口。请查看Core Graphics 框架参考 。
CoreLocation.framework 2.0 CL 包含确定用户方位信息的接口。请查看Core Location 框架参考。
CoreMedia.framework 4.0 CM 包含操作音频和视频的底层例程。请查看Core Media 框架参考。
CoreMotion.framework 4.0 CM 包含访问加速度计以及陀螺仪的数据的接口。请查看Core Motion 框架参考。
CoreTelephony.framework 4.0 CT 包含访问电话相关的信息的例程。请查看Core Telephony 框架参考。
CoreText.framework 3.2 CT 包含一个文本的布局渲染引擎。请查看Core Text参考集.。
CoreVideo.framework 4.0 CV 包含操作音频和视频的底层例程。请不要直接使用该框架。
EventKit.framework 4.0 EK 包含访问用户日历事件数据的接口。请查看Event Kit 框架参考。
EventKitUI.framework 4.0 EK 包含显示标准系统日历界面的类。请查看Event Kit UI 框架参考。
ExternalAccessory.framework 3.0 EA 包含与外设进行通讯的接口。请查看External Accessory 框架参考。
Foundation.framework 2.0 NS 包含Cocoa Foundation层的类和方法。请查看Foundation 框架参考。
GameKit.framework 3.0 GK 包含点对点连接管理接口。请查看Game Kit 框架参考。
iAd.framework 4.0 AD 包含在应用程序中显示广告的类。请查看iAd 框架参考。
ImageIO.framework 4.0 CG 包含读取或写入图像数据的类。请查看Image I/O 参考集。
IOKit.framework 2.0 N/A 包含设备所使用的接口。请不要直接使用此框架。
MapKit.framework 3.0 MK 包含将地图界面嵌入到应用程序的类,也可以用于查找地理编码反向坐标。请查看Map Kit框架参考。
MediaPlayer.framework 2.0 MP 包含显示全屏视频的接口。请查看Media Player 框架参考。
MessageUI.framework 3.0 MF 包含撰写和排队发送电子邮件信息的界面。请查看Message UI 框架参考。
MobileCoreServices.framework 3.0 UT 定义系统支持的统一类型标识符(UTIs)。
OpenAL.framework 2.0 AL 包含OpenAL接口。OpenAL是一个跨平台的方位音频库。如需进一步了解,请访问www.openal.org
OpenGLES.framework 2.0 EAGL,GL 包含OpenGL ES接口。OpenGL ES框架是OpenGL跨平台2D和3D渲染库的跨平台版本。请查看OpenGL ES 框架参考。
QuartzCore.framework 2.0 CA 包含Core Animation接口。请查看Quartz Core 框架参考。
QuickLook.framework 4.0 QL 包含预览文件接口。请查看Quick Look 框架参考。
Security.framework 2.0 CSSM,Sec 包含管理证书、公钥私钥以及信任策略的接口。请查看Security框架参考。
StoreKit.framework 3.0 SK 包含用于处理与应用程序内购买相关的财务交易。请查看 Store Kit 框架参考。
SystemConfiguration.framework 2.0 SC 包含用于处理设备网络配置的接口。请查看System Configuration框架参考。
UIKit.framework 2.0 UI 包含iOS应用程序用户界面层使用的类和方法。请查看UIKit 框架参考。