写在前面
- 本文内容主要来自iOS官方文档, 由于英文水平有限, 有些翻译不够位的地方欢迎提出交流
- 本文并没有写出文档当中所有的内容, 后继会继续更新!
- 转载请注明出处, 谢谢!
关于iOS技术 / About iOS Technologies
瞄一眼
iOS SDK 提供了你开发原生iOS App所需要的资源. 对相关技术和SDK包含的工具的进行简单了解, 可以帮助你在设计与实现App时做出更好的选择.
iOS系统的结构是分层级的
在最高级别上, iOS扮演了底层硬件和你创建的App之间的中间人. App并不需要直接与底层硬件沟通. 而是通过一系列的定义良好的系统接口来完成与硬件的通讯. 这些接口使得App在不同性能的硬件设备上都能一致的工作.
iOS相关技术的实现可以看成是一系列层级, 展示在Figure I-1. 底层级包含基本的服务和技术. 高层级依赖于底层级, 提供更多复杂的服务和技术.
Figure I-1** Layers of iOS
- 在写代码时, 建议你优先使用高层级的框架而不是底层级的. 高层级的构架为底层级的结构体提供面向对象的抽象. 这些抽象通常会更容易写代码, 因为它们减少你要写的代码数量并且已经囊括了可能要合成的特性. 如果高层级的框架并没有暴露所需要的特性时, 再考虑使用底层级的框架和技术.
Cocoa Touch 层
Cocoa Touch Layer 包含了构建iOS App的关键框架. 这些框架定义了你的App显示的样式. 它们还提供了基本App的构造基础和对关键技术的支持, 如多线程, 基于触摸的输入, 推送通知, 和许多高层级的系统服务. 在计划App时, 你应该优先调查Cocoa Touch层中的技术看看是否满足你的需求.
Cocoa Touch Frameworks
框架 | 简单描述 |
---|---|
Message UI | Message UI 框架提供了App集成邮件与短信的支持. 支持包括在App界面中弹出一个视图控制器界面. 可以在该视图控制器中填入接收者, 主题, 主要内容和任意你想包含在信息里的附件. 在弹出该视图控制器后, 用户可以选择在发送之前对其做出编辑 |
Address Book UI | Address Book UI框架是一个Object-C编程接口, 用来显示创建新联系人和编辑已经存在联系人信息的标准系统联系人界面. 该框架简化了在App中显示联系人信息的操作, 同时保证所有App的联系人界面在同一平台上都相同 |
EventKit UI | EventKit UI框架提供了可以弹出查看和编辑日程相关事件的标准系统界面的视图控制器. 该框架建立在EventKit框架的事件相关数据之上 |
GameKit | GamkeKit框架实现了对Game Centre的支持, Game Center让用户可以在线分享游戏相关数据 |
iAd | iAd框架让App实现横幅广告的展示. 广告会嵌入到你的交互界面的标准视图中, 并在需要的时候弹出 |
MapKit | MapKit框架提供可嵌入到App的用户界面中的可拖拽地图. 可以使用该框架来自定义地图的内容与外观 |
NotificationCenter | Notification Center框架提供创建在通知中心里显示信息的小部件的功能 |
PushKit | PushKit框架提供VoIP App的注册使用支持. 该框架替代了之前注册VoIP App的API |
UIKit | UIKit框架提供了实现绘图和事件驱动App的重要基础 |
Media 层
Media Layer 包含了绘图(graphics), 音频(audio)和视频(video)等多媒体体验的技术实现
Graphics Technologies
技术 | 简单描述 |
---|---|
UIKit graphics | UIKit 在视图上绘制图片, 贝赛尔路径和动画的内容. 提供了相关类来实现绘制支持. UIKit视图提供了快速有效的渲染图片与文本内容的方式 |
Core Graphics | Core Graphics (也称为Quartz) 是iOS App原生的绘图引擎, 提供了自定义2D矢量和图像渲染. 尽管速度上没有OpenGL ES的渲染速度快, 但能很好的处理自定义2D图形渲染和动态图像 |
Core Animation | Core Animation(Quartz Core框架的一部分) 是优化App动画体验的基础技术. UIKit的view使用Core Animation来提供视图层级的动画支持. 可以直接使用Core Animation来控制动画的行为 |
Core Image | Core Image 为无损操作视频与静态图片提供了高级支持 |
OpenGL ES | OPenGL ES 使用硬件加速接口(Hardware-accelerated interfaces)处理高级的2D与3D渲染. 该框架通常由游戏开发人员, 或是想实现 immersive graphical(可浸入图形) 体验的任何人. 该框架提供了渲染过程的完全控制和提供创建平滑动画的帧速率 |
GLKit | GLKit 是Object-C的类的集合, 这些类提供基于对象的接口来使用OpenGL ES的功能 |
Metal | Metal 提供了使用非常低开销(low-overhead)来访问A7 Gpu, 并实现难以置信的高性能去执行复杂的动画渲染和计算任务. |
TextKit | TextKit 是UIKit的一部分, 用来执行文字排板和文字管理. 如果你的App要使用高级的文字操作, TextKit可以与其余的View进行无缝整合 |
CoreText | CoreText是底层的基于C语言的框架, 用来处理高级的文字排板和布局 |
Image I/O | Image I/O 提供了渲染和写入大部份格式的图片的接口. |
Photos Library | Photos 和 PhotosUI 框架提供了访问用户图片, 视频和媒体的功能, 在App需要整入获取用户内容时使用 |
Audio Technologies
技术 | 简单描述 |
---|---|
Media Player | 该高层级的框架提供了访问用户的iTunes库和播放的曲目和播放列表的简单方式. 当App需要快速接入音频或不需要做播放状态控制时可以使用该框架 |
AV Foundation | AV Foundation 是管理录音和播放音频/视频的基于Object-C的接口. 可以使用该框架录制音频或需要精确的控制音频播放过度时使用 |
OpenAL | OpenAL 是用来传递可定位音频的行业标准技术. 游戏开发者会频繁的使用该框架一系统跨平台接口来传递高质量音频 |
Core Audio | Core Audio是提供将录音, 音频播放和MIDI内容由简单到精密处理的功能的一系列框架. 该框架给需要精密控制音频的高级开发使用 |
Video Technologies
技术 | 简单描述 |
---|---|
UIImagePickerController | UIImagePickerController 是用来选择用户媒体文件的视图控制器. 可以使用该类快速的获取用户存在的图片, 视频, 或者让用户捕获新内容. |
AVKit | AVKit框架提供了一系列简单的展示视频的接口. 该框架支持全屏和局部展示的视频播放以及提供用户可选的播放控制 |
AV Foundation | AV Foundation提供了高级的视频播放和录制的能力. 当需要更多的控制视频展示或视频录制时使用, |
Core Media | Core Media定义了底层数据类型和操作媒体的接口. 大部分App不需要直接使用该框架, 不过当你需要对视频内容进行罕见的控制时会相当有用 |
Core Services 层
Core Services Layer 包含了App的基本系统服务. 其中关键的框架是 Core Foundation 与 Foundation, 定义了所有App使用的基本数据类型. Core Services Layer还包含了支持定位, iCloud, 社交媒体和网络的特征对应的特殊技术.
Core Services Frameworks
框架 | 简单描述 |
---|---|
Accounts Framework | Accounts框架为明确的用户账号提供了单一登陆模式. 单一登陆模式避免了提示用户区分多个账号的必要性, 以提高用户体验. 单一登陆也可管理App的账号授权处理来简化开发模式. 可以将框架与Socical框架结合使用 |
Address Book Framework | Address Book框架提供了用户联系人数据库的编程访问. 如果App使用联系人信息, 可以通过该框架访问和配置联系人信息 |
Ad Support Framework | Ad Support框架提供一个标识, 为App做广告用途提供访问 |
CFNetwork Framework | CFNetwork框架处来处理网络协议的基于C的面向对象的高性能的抽象接口集合. 这些抽象提供了协议栈的详细控制, 并能更容易的使用底层的构造比如BSD Socket. 可以使用该框架来简化任务比如与FTP服务和Http服务进行通信或解析DNS hosts |
CloudKit Framework | CloudKit提供了在App与iCloud之间进行数据转移的渠道. 与其它不可察觉的iCloud技术进行数据转移不同, 在数据转移时CloudKit给你控制权限. 你可以使用CloudKit管理所有类型的数据 |
Core Data Framework | Core Data框架是为MVC模式的App提供数据模型管理的技术. Core Data是为数据模型已经高度结构化的App准备的. 你可以使用Xcode的图形化工具来构建一个schema来表示数据模型, 取代以编程的方式定义数据结构. 在运行时, 透过Core Data框架, 数据模型实体的实例会被创建, 管理并且使用 |
Core Foundation Framework | Core Foundation框架是基于C的接口集合, 提供iOS App的基本数据管理和功能服务 |
Core Location Framework | Core Location框架为App提供位置与方向的信息. 该框架使用星载GPS, 移动蜂窝网络, Wifi广播来发现用户当前的经纬度. 你可以通过整合该技术到App中来为用户提供基于位置的信息 |
Core Media Framework | Core Media框架了提供了AV Foundation框架使用的底层的媒体类型. 大部分App不需要使用该框架, 仅少部分需要精确的控制音频与视频内容的创建和呈现的开发者使用 |
Core Motion Framework | Core Motion框架提供了访问设备上所有可用的基于动作事件的单一接口集合 |
Core Telephony Framework | Core Telephony框架提供了作用于具备蜂窝无线网络的手机的相关信息的接口. App可以使用该框架获取用户的蜂窝网络运营商的相关信息 |
EventKit Framework | EventKit框架提供了访问用户设备的日程表事件的接口 |
Foundation Framework | Foundation框架可以将Core Foundation框架中许多功能转化成Object-C的功能 |
HealthKit Framework | HealthKit是一个管理用户健康相关数据的新框架 |
HomeKit Framework | HomeKit是一个连接并管理用户家中已经连接的设备的新框架 |
JavaScript Core Framework | JavaScript Core框架为许多标准的JavaScript对象提供了Object-C的封装类. 使用该框架来使用JavaScript代理和解析JSON数据 |
Mobile Core Services Framework | Mobile Core Services框架定义了UTIs(统一类型标识)使用的底层类型 |
Multipper Connectivity Framework | Multiplier Connectivity框架提供了发现附近设备并在不需要请求网络连接的情况下直接与他们通讯的支持 |
NewsstandKit Framework | Newsstand App 提供了用户阅读杂志和新闻的核心位置, 使用NewsstandKit来初始化新杂志和新闻后台下载 |
PassKit Framework | Passbook app 为用户提供了保存商业的优惠卷, 登机牌, 活动门票和折扣卡的地方. 取代携带这些东西的实物代表, 现在用户可以将他们保存到iOS设备中并与以前一样同样的使用. PassKit框架提供了将这些项目整合到你App中的Object-C接口 |
Quick Look Framework | Quick Look框架提供了为App不能直接支持的文件内容进行预览功能的接口. 该框架的主要针对为从网络下载文件或者在其它未知源中工作的App. 在获取文件类型后, 你使用该框架提供的控制器在你的界面上直接显示内容信息 |
Safari Services Framework | Safari Services框架提供了添加URL到用户的Safari的Reading List (阅读列表)的编程接口 |
Social Framework | Social框架提供了访问用户的社交媒体账户的单一接口, 该框架支持Twitter, Facebook, 新浪微博等其他社交账号 |
StoreKit Framework | StoreKit框架提供了在iOS App中购买内容和服务的支持, 即称为内购 (In-App Purchase) 的功能 |
System Configuration Framework | System Configuration框架提供了可能性检测接口, 可以用来决定设备的网络配置情况. 你可以使用该框架来决定当前正在使用的Wifi或者移动蜂窝网络, 判断一个详细的host服务是否可以被访问 |
WebKit Framework | WebKit框架可以让HTML内容在App中进行显示. 除了显示HTML外, 你可以提供基本编辑支持以便用户可以替换文本和操作document的文本与属性, 包含CSS样式属性. WebKit还支持创建和编辑DOM(Document Object Model : 文档对象模型)级别的HTML内容. 比如, 你可以扩展一个页面的链接列表, 在WebView显示该document之前配置并替换它们 |
Core OS 层
Core OS Layer 包含了大部分其它技术依赖的底层功能. 即使你没有在App中直接使用这些技术, 但他们很可能在其他框架中被使用. 在某些情况下, 当你需要直接处理数据加密或与外部硬件附件进行通讯时, 你确实需要使用该层的相关框架
技术 | 简单描述 |
---|---|
Accelerate Framework | Accelerate框架包含了数字信号处理(Digital Signal Processing), 线性代数(Linear algebra)和图片处理计算(image-processing calculations)的接口. 比起写一个你自己的版本的接口, 使用该框架的优势在于其充分利用了存在于iOS设备的所有硬件配置信息. 因此, 你可以只写一遍代码就可以确定其能有效的运行的所有设备上 |
Core Bluetooth | Core Bluetooth 框架允许开发者与低功耗蓝牙设备附件进行交互. 该框架的Object-C接口可以实现下列功能: 1. 扫描蓝牙附件并进行连接或断开连接 2. 从你的App公开服务(Services), 将iOS设备变成其他蓝牙设备的外部设备 3. 从iOS设备广播iBeacon信息 4. 保存蓝牙连接的状态信息并在运行App后恢复连接 5. 订阅可用的蓝牙外部设备并在发生改变时得到通知 |
External Accessory Framework | External Accessory 框架提供了与连接到基于iOS系统设备的硬件附件进行通讯的支持. 可以使用30针基座接口连接或使用蓝牙无线连接到附件上. External Accessory框架为你提供了获取每一个可用附件设备的信息和初始化通讯会话的方法. 之后, 你可以使用其提供的命令随意的直接操控附件. |
Generic Security Services Framework | Generic Security Services框架为iOS App提供了一系列安全相关的标准服务. 该框架的基本接口指定 IETF RFC 2743 和 RFC 4401. 除了基本接口外, iOS还额外包含证书(非标准证书, 但大部App需要)管理 |
Local Authentication Framework | Local Authentication 框架可以让你使用Touch ID来鉴别用户.一些App需要安全访问它的全部内容, 或者其他人需要安全访问特定部分的信息或选项. 不管哪种情况, 你可以在开始之前请求用户进行验证鉴定. 使用该框架向用户显示弹窗, 带有App指定的用户验证的目的原因说明. 当App得到回应时, 可以根据用户是否成功验证做出反应 |
Network Extension Framework | Network Extension 框架提供了配置和控制VPN通道的支持. 使用该框架创建VPN配置信息. 你可以手动开始VPN通道或者提供按需分配规则来开始VPN通信来响应指定的事件 |
Security Framework | 除了内置的安全功能外, iOS还提供了可以保证你的App管理的数据的安全的直接加密框架. 该框架提供用于证书, 公钥, 私钥和信任策略的管理的接口. 它支持随机数字的安全密码生成. 还支持装饰密码的钥匙(Key)和证书保存到钥匙串(Keychain)中, 钥匙串是用来存放用户敏感数据的安全仓库 |
System | iOS提供了一系列接口, 可以访问许多操作系统底层特性. 你的App通过 LibSystem 库来访问这些特性. 该接口基于C基础, 提供以下支持: 1. 并发机制 (POSIX线程 和 GCD) 2. 网络 (BSD sockets) 3. 访问文件系统 4. 标准输入输出 5. Bonjour 与 DNS服务 6. 区域信息 7. 内存分配 8. Math运算 Core OS 技术的许多头文件都定义在 |
64-Bit Support | iOS最初设计为使用32位架构的设备的二进制文件提供支持. 在iOS7后, 引进了编译, 链接和调试基于64位框架的二进制文件. 所有的系统库与框架都为64位做好准备, 意味它们都支持在32位和64位App中进行使用. 当对64位的运行时进行编译时, App或许运行得更快因为64位模式有可用的额外的处理器资源 |