iOS框架简介

四大部分

一.Cocoa Touch

Cocoa Touch层包含创建 iOS应用程序所需的关键框架。上至实现应用程序可视界面,下至与高级系统服务交互,都需要该层技术提供底层基础。

高级特性

多任务

应用程序进入后台后,不会被消除,用户可以在程序进入后台后

数据保护
苹果推送通知
本地通知
手势识别

提供UIGestureRecognizer

文件共享支持
点对点服务
标准视图控制器
  • 选择照片,视频,拍照,录制视频 - UIImagePickerController
  • 显示编辑联系人页面 - 参考Contacts,或者AddressBookUI框架
  • 显示发送短信,邮件页面 - 参考MessageUIKit框架
  • 显示日历事件编辑,修改页面 - 参考EventUIKit框架
外部设备支持

Cocoa Touch层包含的框架

UIKit(UIKit.Framework):Objective-C编程接口提供iOS应用程序的图形及事件驱动的所有关键基础,具有以下核心功能
  • 应该用程序管理 - UIApplication
  • 用户界面管理 - UIWindow
  • 图形,窗口支持 - UIWindow
  • 多任务支持
  • 处理触摸,移动 - UIResponser
  • 标准视图控件 - UIView 等等
  • 文本,webView等操作 - UILabel,UIWebView
  • 使用动画
  • 调用相机,设备支持
  • 加速器数据
  • 用户图片库
  • 远程通知,本地通知
AddressBookUI(AddressBookUI.Framework)-iOS9弃用:提供选择联系人,编辑联系人界面接口
Contacts(Contacts.Framework)-iOS8+:替代AddressBookUI,提供选择,编辑联系人界面的接口
EventUIKit(EventUIKit.Framework):提供日历事件编辑,添加接口
MapKit(MapKit.Framework):提供地图编程接口
MessageUIKit(MessageUIKit):提供信息,邮件发送界面接口
PhotosUI(PhotosUI):提供图片选择界面接口
WatchKit:苹果手表开发接口
Twitter:推特编程相关接口
iAd:广告编程接口,使用苹果广告服务
NotificationCenter 系统通知

二.Media 媒体服务接口层

媒体层包含图形技术、音频技术和视频技术,这些技术相互结合就可为移动设备带来最好的多媒体体验,更重要的是,它们让创建外观音效俱佳的应用程序变得更加容易。您可以使用iOS的高级框架更快速地创建高级的图形和动画,也可以通过底层框架访问必要的工具,从而以某种特定的方式完成某种任务。

高级特性

图形技术

高质量的图形是iOS应用程序的重要组成部分。创建应用程序最简单最有效的方法是使用事先渲染过的图片,搭配上标准视图以及UIKit框架的控件,然后把绘制任务交给系统来执行。但是在某些情况下,您可能需要一些UIKit所不具有的功能,而且需要定制某些行为。在这种情况下,您可以使用下述技术管理应用程序的图形内容:

  1. Core Graphics (也被称为Quartz),用于处理本地2D向量渲染和图片渲染。
  2. Core Animation ( Quartz Core框架的一部分),为动画视图和其他内容提供更高级别支持。
  3. OpenGL ES,为使用硬件加速接口的2D和3D渲染提供支持。
  4. Core Text,提供一个精密的文本布局和渲染引擎。
  5. Image I/O,提供读取及编写大多数图形格式的接口。
  6. 资产库框架(Assets Library framework),可用于访问用户照片库中的照片和视频。
音频技术

iOS音频技术可帮助您为用户提供丰富多彩的音响体验。您可以使用音频技术来播放或录制高质量的音频,也可以用于触发发设备的震动功能(具有震动功能的设备)。

  1. 媒体播放器框架。该框架可以让访问用户的iTune库变得很容易,并且支持播放曲目和播放列表。
  2. AV Foundation框架。它提供一组简单易用的Objective-C接口,可用于管理音频的播放或录制。.
  3. OpenAL框架。它提供一组跨平台,用于发布方位音频的接口。
  4. Core Audio框架。它提供的接口简单而精密,可用于播放或录制音频内容。您可以使用这些接口播放系统的警报声音、触发备的震动功能、管理多声道的缓冲和播放、对音频内容进行流化处理。
视频技术

iOS有数种技术可用于播放应用程序包的电影文件以及来自网络的数据流内容。如果设备具有合适的视频硬件,这些技术也可用于捕捉视频,并可将捕获到的视频集成到应用程序。

系统提供也提供多种方法用于播放或录制视频内容,您可以根据需要选择。选择视频技术的时候,请尽可能选择高级框架,因为高级框架可以简化为提供对某种功能的支持所需的工作。下面列出的框架由高级到低级排列。其中,媒体播放器框架提供最高级的接口:

  1. 媒体播放器模块:提供一组易用的接口,播放音视频文件
  2. AVFoundation:提供一组Objective-C接口,用户自定义接口,播放音视频,也可以捕捉音视频数据
  3. CoreMedia:底层的音视频C语言接口

媒体层包含的常用框架

AssetsLibrary(iOS8+推荐使用Photo):

该框架提供一个查询界面,您可以通过它查找用户照片和数据。通过使用该框架,您可以访问Photos管理的资产,包括用户保存的相册以及导入到设备中的图片或视频。而且您也可以将照片或者视频保存到用户的相册

AVFoundation:

该框架包含的Objective-C 类可用于播放音频内容。通过使用该框架,您可以播放声音文件或播放内存中的音频数据,也可以同时播放多个声音,并对各个声音的播放特定进行控制。

  1. 媒体数据管理
  2. 媒体编辑
  3. 音视频捕捉
  4. 音视频播放
CoreGraphics:

包含Quartz 2D绘图API接口 。Quartz 是Mac OS X系统使用的向量绘图引擎,它支持基于路径绘图、抗锯齿渲染、渐变、图片、颜色、坐标空间转换、PDF文件的创建、显示和解析。虽然API基于C语言,但是它使用基于对象的抽象以表示基本绘图对象,这样可以让开发者可以更方便地保存并复用图像内容。

CoreText框架:

Core Text框架提供一个完整的文本布局引擎,您可以通过它管理文本在屏幕上的摆放。所管理的文本也可以使用不同的字体和渲染属性。该框架专为诸如字处理程序这类需要具有精密文本处理功能的应用程序而设计。如果您的应用程序只需要一种文本输入和显示,则应使用UIKit框架中已有的类。

媒体播放框架(MediaPlayer-iOS9+推荐AVKit):

媒体播放器框架 (MediaPlayer.framework)为应用程序播放视频和音频内容提供高级支持。通过该框架,您就可以使用标准系统界面播放视频。 iOS 3.0增加了对访问用户iTune库的支持。因此,您可以利用该框架播放音乐曲目、播放列表、搜索歌曲并向用户显示媒体选取界面。

在 iOS 3.2系统中,该框架发生了变化,开始支持在可改变尺寸的视图中播放视频(之前只支持全屏)。另外还新增数个界面用于支持配置和管理电影播放。

如需进一步了解媒体播放器框架中的类,请查看媒体播放器框架参考 。如需了解如何使用该框架访问用户的 iTunes库,请查看iPod 库访问编程指南。

QuartzCore框架:

Quartz Core框架 (QuartzCore.framework)包含Core Animation接口。Core Animation是高级动画制作和混合技术,它使用经过优化的渲染路径实现复杂的动画和视觉效果。它提供的高级Objective-C接口可对动画效果进行配置,然后在设备硬件中进行渲染,以此来提高程序的性能。Core Animation框架被整合到iOS的许多部分(包括UIKit框架中的许多类(如UIView)),可以为多种系统行为提供动画效果。您也可以使用该框架中的Objective-C接口直接创建定制动画。

三.CoreService 层

Core Services层为所有的应用程序提供基础系统服务。可能应用程序并不直接使用这些服务,但它们是系统很多部分赖以建构的基础。

高阶特性

块对象

引入block概念,从本质上说,块对象本质上是一个匿名函数加上该函数的伴随数据。有些时候,其他语言也称块对象为 closure或者lambda。块对象非常适用于回调函数。如果您需要有很便捷的方法将执行代码和相关数据组合在一起,块对象也是很好的选择。

在 iOS系统中,块对象通常用于下述场合:

  • 作为委托或委托方法的替代品。
  • 作为回调函数的替代品。
  • 用于实现一次性操作的完成处理器。
  • 简化在群体所有子项上迭代执行某种任务的操作。
  • 配合分发队列。可用于执行异步任务。
Grand Central Dispatch (GCD):

iOS 4.0引入了 Grand Central Dispatch (GCD),它是BSD级别的技术,可用于在应用程序内管理多个任务的执行。GCD技术将异步编程模型和高度优化内核结合在一起,可作为多线程的便捷(且更高效)替代。同时,它也为许多种底层任务( 例如读写文件描述符、实现定时器、监视信号和处理事件等)提供替代方案。

应用内付费购买:

iOS 3.0引入了应用程序内购买功能。通过该功能,您可以在应用程序内出售内容或服务。该功能使用Store Kit框架来实现,它可以为使用iTunes账户进行的财务交易的处理提供基础支持,应用程序只需处理用户体验及待售内容或服务的展现。

定位服务:

应用程序可使用Core Location框架提供的接口追踪用户位置。此框架利用当前可用的硬件无线电波(包括Wi-Fi、蜂窝无线或者GPS)定位用户的当前位置。应用程序可以对框架提供的信息进行裁剪,然后再将其发送给客户, 或是用于实现某些特定功能。举个例子,社交应用程序允许您找到附近其他应用程序用户,然后再与之进行通讯。

SQLite:

SQLite库允许开发者将一个轻量级SQL数据库嵌入到应用程序,而且开发者不需要运行独立的远程数据库服务器进程。在此之后,开发者可以在应用程序中创建本地数据库文件,管理文件中的表和记录。虽然SQLite数据库出于通用目的而设计,但它还是针对数据库记录的快速访问做过优化。

XML 支持

Foundation框架支持使用NSXMLParser 类从XML文档中解析元素,而libXML2库则为操作XML内容提供支持。 libXML2库是开源的,它可以让您快速地解析或写入任意的XML数据,也可将XML内容转化为HTML文件。

Core Service层包含的常用框架

AddressBook:

支持编程访问存储于用户设备中的联系人信息。如果应用程序使用到联系人信息,则可通过该框架访问并修改用户联系人数据库的记录。举个例子,通过使用该框架,聊天程序可以获取一个联系人列表,利用此列表初始化聊天会话,并在联系人视图显示列表的联系人。

CFNetwork

CFNetwork框架 (CFNetwork.framework)提供一组高性能基于C语言的接口,它们为使用网络协议提供面向对象抽象。通过这些抽象,您可以对协议栈进行更精细的控制,而且可以使用诸如 BSD socket这类底层结构。您也可以通过该框架简化诸如与FTP或HTTP服务器通讯以及DNS主机解析这类任务。下面列举一些可以使用 CFNetwork框架执行的任务:

Core Data 框架

iOS提供的一种MV应用程序存储方案

CoreFoundation:

提供Foundation的C语言实现

CoreLocation框架:

Core Location框架 (CoreLocation.framework)可用于定位某个设备当前经纬度。它可以利用设备具备的硬件,通过附近的GPS、蜂窝基站或者WiFi信号等信息计算用户方位。Maps应用程序就是利用此功能在地图上显示用户当前位置。您可以将此技术结合到应用程序,以此向用户提供方位信息。例如,应用程序可根据用户当前位置搜索附近饭店、商店或其他设施 。
在iOS 3.0系统中,该框架开始支持访问iOS设备(具有相应硬件的设备)的方向信息。
在iOS 4.0系统中,该框架开始支持低能耗的方位监视服务,该服务利用蜂窝基站跟踪用户方位。

Core Media 框架

iOS 4.0引入了Core Media框架 (CoreMedia.framework)。此框架提供AV Foundation框架使用的底层媒体类型。只有少数需要对音频或视频创建及展示进行精确控制的应用程序才会涉及该框架,其他大部分应用程序应该都用不上。

如需进一步了解此框架的函数和数据类型,请阅读Core Media 框架参考。

Core Telephony 框架

iOS 4.0引入了Core Telephony框架(CoreTelephony.framework)。此框架为访问具有蜂窝无线的设备上的电话信息提供接口,应用程序可通过它获取用户蜂窝无线服务的提供商信息。如果应用程序对于电话呼叫感兴趣,也可以在相应事件发生时得到通知。

Event Kit 框架

iOS 4.0引入了 Event Kit框架 (EventKit.framework)。此框架为访问用户设备的日历事件提供接口。您可以通过该框架访问用户日历中现有事件,可以增加新事件。日历事件可包含闹铃,而且可以配置闹铃激活规则。

Foundation 框架

Foundation框架 (Foundation.framework)为 Core Foundation框架的许多功能提供Objective-C封装。您可以参考Core Foundation框架了解前面对Core Foundation框架的描述。

Mobile Core Services 框架

iOS 3.0引入了Mobile Core Services框架 (MobileCoreServices.framework)。此框架定义统一类型标识符 (UTIs)使用的底层类型。

Quick Look 框架

iOS 4.0引入Quick Look框架(QuickLook.framework),应用程序可以用过该框架预览无法直接支持查看的文件内容。如果应用程序从网络下载文件或者需处理来源未知的文件,则非常适合使用此框架。因为应用程序只要在获得文件后,调用框架提供的视图控制器就可以直接在界面中显示文件的内容。

Store Kit 框架

iOS 3.0引入Store Kit 框架(StoreKit.framework),此框架为iOS应用程序内购买内容或服务提供支持。例如,开发者可以利用此框架允许用户解锁应用程序的额外功能。或者假设您是一名游戏开发人员,则可使用此特性向玩家出售附加游戏级别。在上述的两种情况中,Store Kit 框架会处于交易过程中和财务相关的事件,包括处理用户通过 iTunes Store账号发出的支付请求并且向应用程序提供交易相关信息。

Store Kit框架主要关注交易过程中和财务相关的事务,目的是为了确保交易安全准确。应用程序需要处理交易事物的其他因素,包括购买界面和下载(或者解锁)恰当的内容。通过这种任务划分方式,您就拥有购买内容的控制权,可以决定希望展示给用户的购买界面以及何时向用户展示这些界面,同时也可以决定和应用程序最匹配的交付机制。

System Configuration 框架

System Configuration框架(SystemConfiguration.framework) 可用于确定设备的网络配置。您可以使用该框架判断Wi-Fi或者蜂窝连接是否正在使用中,也可以用于判断某个主机服务是否可以使用。

HomeKit

iOS8引入,智能家居控制

HealthKit

iOS8引入的,基于设备管理用户健康数据

PassKit

pass凭证相关接口

四.Core OS

Core OS层的底层功能是很多其他技术的构建基础。通常情况下,这些功能不会直接应用于应用程序,而是应用于其他框架。但是,在直接处理安全事务或和某个外设通讯的时候,则必须要应用到该层的框架。

Core OS层包含的框架

Security 框架

iOS系统不但提供内建的安全功能,还提供Security框架(Security.framework)用于保证应用程序所管理之数据的安全。该框架提供的接口可用于管理证书、公钥、私钥以及信任策略。它支持生成加密的安全伪随机数。同时,它也支持对证书和Keychain密钥进行保存,是用户敏感数据的安全仓库。

CommonCrypto接口另外还支持对称加密、HMAC以及Digests。实际上,Digests的功能实和OpenSSL库常用的功能兼容,但是iOS无法使用OpenSSL库。

在 iOS 3.0及其后续版本的系统中, 您可以让所创建的多个应用程序共享某些Keychain项,这样可以让相同套件内的应用程序的互用更流畅。举个例子,您可以在应用程序间共享用户密码和及其他元素。通过这种方法,您就不需要在每个应用程序单独对用户作出提示。如应用程序需要共享数据,则每个应用程序的Xcode工程必须配备恰当的资格。

CoreBlueTooth

底层蓝牙编程实现模块

你可能感兴趣的:(iOS框架简介)