--iOS是基于Unix的系统,整个系统可以粗略的分为四层。分别是Core OS层,Core Services层,Media层以及Cocoa Touch层。

========================================

==============Cocoa Touch层==============
cocoa touch 层包含了构建iOS应用程序的核心框架。该层主要负责用户操作,UI,View等直接与End User打交道的部分。简单的讲就是用户使用手机的时候可以真实感受或者看到的部分.这一层也是我们编程时会大量使用,甚至主要使用的部分.
==============cocoa touch层关键特性==============
1、Auto Layout(iOS6)允许你定义用户界面的布局规则。------ Cocoa Auto Layout Guide
2、storyboard(iOS5)取代nib的新的设计用户界面的工具。将不同的view和controller集成到一个界面中管理,它能定义segue,从一个controller过渡到另外一个controller。-------Xcode User Guide(UIStoryboard Class Reference)
3、document support(iOS5)提供了UIDocument类来管理用户文档中的数据。------Document-Based AppProgramming Guide for iOS
4、Multitasking(iOS4)后台运行以便快速恢复,能更加省电。正常情况下 程序在后台是暂停的,但是有些情况允许程序继续运行在后台里。
(1)应用程序可以申请一个有限的时间去执行重要的任务
(2)后台运行特定服务
(3)本地通知
------iOS App ProgrammingGuide
5、printing(iOS4.2)无线打印------Printing Drawing and Printing Guide for iOS
6、UI state preservation(iOS6)UI状态保存------iOS App ProgrammingGuide
7、Apple Push NotificationService(iOS3)推送通知------Local and Push Notification Programming Guide
8、Local Notifications(iOS4)本地通知------Local and PushNotification Programming Guide
9、Gesture Recognizers(iOS3.2)手势识别器(六个子类:轻拍、捏合、平移、轻扫、旋转、长按)-------Event Handing Guide foriOS
10、peer-to-peer services(iOS3)对等服务 GameKit框架提供的通过蓝牙连接的对等服务-------Game Center ProgrammingGuide
11、Standard System ViewControllers 标准的系统视图控制器
(1)显示和编辑联系人信息的 Address Book UI framework
(2)创建和编辑日历事件的 Event Kit UI framework
(3)处理邮件和短信的Message UI framework
(4)打开或预览文件内容的UIDocumentInteractionController
(5)拍摄和裁剪音视频的UIImagePickerController
------View ControllerProgramming Guide for iOS View Controller Catalog for iOS
12、External Display Support(iOS3.2)外接显示器支持---------View ProgrammingGuide for iOS
==============cocoa touch层框架==============
1、Address Book UI framework:OC接口,提供创建新联系人、编辑以及选择已存在联系人。-------Address BookProgramming Guide for iOS Address Book UI Framework Reference foriOS
2、Event Kit UI framework(iOS4):展示以及编辑日历相关的事件 标准系统控件。------Event Kit UI Framework Reference
3、Game Kit framework(iOS3):允许你的程序添加点对点的网络,提供点对点连接以及游戏内语音。尽管这些特性多见于多人玩的网络游戏里,你同样可以把它们加入到你的应用程序中。iOS4.1之后,添加了新内容:(1)用户可以创建别名(2)排行榜(3)安排比赛(4)允许你记录player在你游戏里的进度(5)发起挑战(iOS6之后)(6)支持回合制游戏-------Game Center ProgrammingGuide Game Kit Framework Reference
4、iAd framework(iOS4):允许应用程序发布 横幅 广告。可以将广告放入标准视图中,视图本身基于苹果广告的服务自动管理加载、呈现以及响应点击。-------iAd Programming Guide iAd Framework Reference
5、Map Kit framework(iOS3):提供可以滑动的地图视图,可以使用地图提供方向或者显示自己感兴趣的点,同样可以添加标注(自定义图片或者内容),iOS4之后,mapview添加了拖拽注解以及自定义浮层(比如加乘车路线),iOS6之后,你可以创建寻路程序,当用户请求公交有关的方向,地图应用程序允许用户自己程序获取路线,除此之外,所有的应用都可以调用地图程序显示POI信息-------Location AwarenessProgramming Guide Map Kit Framework Reference
6、Message UI framework(iOS3):提供标准短信和邮件界面,而且可以预置字段信息。-------Message UI FrameworkReference
7、Twitter framework:iOS6后 Twitter framework被Social framework替代,提供了UI以及URL访问twitter服务。在iOS5里,你可以使用Twitter framework生成twitter请求以及发送信息。------Social Framework Twitter Framework Reference
8、UIKit framework:iOS最基础的框架,包含了图形、事件等。
(1)应用程序管理

(2)用户界面管理,包括支持storyboard以及nib文件
(3)图形和窗口支持,支持多显示

(4)支持多任务

(5)支持打印
(6)支持自定义控件外观(iOS5)
(7)支持控制器包含其他控制器内容(iOS5)
(8)触摸以及晃动事件处理
(9)提供标准视图和控件
(10)支持文本和网页内容
(11)剪切、复制和粘贴
(12)动画
(13)访问其他应用程序
(14)残疾人士的辅助功能
(15)远程通知
(16)本地通知
(17)PDF创建
(18)支持自定义输入view取代系统键盘
(19)支持键盘上方添加视图
(20)支持多种分享:email,twitter、Facebook以及其他服务
(21)加速计
(22)照相机
(23)相册
(24)设备信息获取
(25)电池状态
(26)接近传感器
(27)远程控制
-----UIKit Framework Reference

===================================

==============Media层==============

媒体层提供了图形、音频和视频技术支持,以达到移动设备上极佳的多媒体体验。

==============图形技术==============

高品质图形是iOS应用程序非常重要的一部分,最简单(和最有效)的方法来创建一个应用程序是使用预渲染图片与UI标准控件结合实现系统绘制。然而,有些时候你可能需要一些稍微复杂的图形,你可以使用下面的技术来管理你的图形内容:

1、Core Graphics(Quartz)处理本地2D矢量图形和基于图像的渲染 -------Core GraphicsFramework
2、Core Animation提供视图动画高级支持-----Quartz Core Framework
3、Core Image提供视频和静态图片的高级支持-----Core Image Framework
4、OpenGL ES和GLKit 提供2D、3D硬件加速渲染接口------OpenGL ES Framework GLKit Framework。
5、Core Text提供了一个复杂的文本布局和渲染引擎。-----Core Text Framework。
6、Image I/O提供大部分图像格式的读写接口。-------Image I/O Framework
7、Assets Library framework提供了在用户相册访问图片和视频的接口------Assets Library Framework
在大多数情况下,应用程序运行在Retina屏设备上几乎不用对代码做任何修改。你画的任何内容会自动支持高分辨率屏幕。基于矢量的绘图代码,系统框架自动帮你完成了像素的填充。如果你在程序中使用了图片,系统自动帮你加载高分辨率图片。------App-Related Resources介绍了如何适应高清屏幕
==============音频技术==============
--音频技术在iOS中被设计用来提供丰富的音频用户体验。这个体验包括:播放高品质音频,录制高品质音频,以及触发某些设备的震动功能。
系统提供了几种方法来播放以及录制音频内容。接下来的框架列表是按照高层到底层的顺序列举的。Media Player Framework是最高层的音频接口,当选择一个音频技术的时候,高层的框架是最容易使用也是最优先的。低层框架提供更大的灵活性和控制,但是需要你做更多的功能。
(1)Media Player framework提供简单的方式访问用户的iTunes列表,支持播放列表并且能监测播放状态。------Media Player Framework
(2)AV Foundation 提供了一系列简单易用的OC接口用于管理音频播放和录制。------AV Foundation Framework
(3)OpenAL 提供了一系列跨平台接口提供位置音频。------OpenAL Framework
(4)Core Audio框架提供了 简单和复杂接口来播放以及录制音频内容。你使用这个接口播放系统的警告,手机震动,管理缓冲,播放多通道本地或流音频内容。------Core Audio
iOS支持以下音频格式:------Media Layer Frameworks
    AAC、Apple Lossless(ALAC)、A-law、IMA/ADPCM(IMA4)、Linear PCM、u-law、DVI/Intel IMA ADPCM、Microsoft GSM 6.10、AES3-2003
==============视频技术==============
--无论你播放应用程序的电影文件还是网络上的视频流,iOS提供了几种播放视频内容的技术。设备的硬件可以捕获视频并且应用到你的程序中。
系统提供了几种途径播放以及录制视频,你可以根据需要选择使用这些技术。当选择一个视频技术,记住,高级框架帮你做了很多工作,简化了操作,应该首选高级框架。下面的框架列表是按从高到低顺序列举的。
(1)UIImagePickerController类提供了使用设备录像的接口。
(2)Media Player Framework提供了一系列简单易用呈现全屏或者小屏视频的接口。-----Media Player Framework
(3)AV Foundation Framework提供了一些列OC接口用于管理捕获或者播放视频。-----AV Foundation Framework
(4)Core Media 描述了高层框架使用的底层数据类型,提供了低层接口操作媒体。-----Core Media Framework
iOS支持播放以下后缀的文件:.mov、.mp4、、m4v、.3gp
压缩标准:
--H.264 视频 最高达1.5Mbps,640x480像素,每秒30帧。低复杂度版本的H.264基本配置使用AAC-LC音频,最高达160Kbps,48kHZ,立体声,视频以.m4v、.mp4、.mov为后缀
--H.264 视频 最高达768Kbps,320x240像素,每秒30帧。基本配置使用AAC-LC音频,最高达160Kbps,48kHZ,立体声,视频以.m4v、.mp4、.mov为后缀
--MPEG-4视频,最高达2.5Mbps,640x480像素,30帧每秒,基本配置使用AAC-LC音频,最高达160Kbps,48kHZ,立体声,视频以.m4v、.mp4、.mov为后缀
--想获得更多关于UIImagePickerController类的使用,参考Camera Programming Topics foriOS.
==============AirPlay==============
--AirPlay 是一中能让你应用程序的音频流在Apple TV或者其他第三方的扬声器或者接收器上播放的技术。AV Foundation框架和Core Audio都内置了AirPlay。使用上述框架,一旦你选择使用AirPlay播放音频,都会被系统自动处理以及转换。
--在iOS5里,用户可以AirPlay将iPad2上的内容映射到Apple TV2上。开发者可以创建UIScreen对象通过AirPlay展示不同的内容到iPad2上。iOS5同样提供了多种方式通过AirPlay传递内容,包括使用AV Foundation Framework中的 AVPLayer以及UIKit的中的UIWebView,此外,Media Player Framework支持显示 “正在播放”信息在多个地方。-------AirPlay OverView。
==============Media 层框架==============
----Assets Library Framework
iOS4.0之后引入的,提供了一个基于查询的接口来检索用户设备上的照片和视频。使用这个框架,你可以在自己的程序内来访问 Photos 应用程序的 相册以及视频资源。同样可以存储照片或者视频到相册。更多这个框架中类和方法的介绍,参考 Assets Libarry FrameworkReference。
----2.AV Foundation Framework
iOS2.2中引入,框架包含了 用于播放音频内容的OC类。你可以使用这些类播放任意时长的 基于文件或者内存的音频。你可以同事播放多个声音,可以控制每个声音的各个方面。iOS3.0之后,这个框架还可以录制音频以及管理音频会话。iOS4.0之后,这个框架的服务扩大到了:
1、媒体资源管理
2、媒体编辑
3、电影捕捉
4、电影回放
5、跟踪管理
6、媒体元素据管理
7、立体声
8、精确同步声音
9、一个OC接口来确定声音的文件信息,例如数据格式,采样率,和声道数量。
iOS5以后,AV Foundation Framework包含了 支持通过AirPlay播放音频、视频流的类AVPlayer。AirPlay默认是启用的,但可以根据需要设置开启或关闭。
AVFoundation Framework 是iOS中单独来录制和播放音频、视频的框架,相对于高级框架,在处理以及管理媒体资源上,提供了更为完美的支持 。更多这个框架中类和方法的介绍,参考 AVFoundation Framework Reference。
----3.Core Audio
本地音频是有Core Audio家族一些列框架支持的,下面的表会列出这个家族。
1.CoreAudio.framework:定义了Core Audio中要用到的各种音频数据类型那个.---- Core Audio Framework Reference.
2.AudioToolbox.framework:提供音频文件和音频流的回放和录制服务,同样提供了管理音频文件,播放系统警告声音以及设备震动接口 . ---- Audio Toolbox Framework Reference.
3.AudioUnit.framework:提供服务使用内置的音频单元,音频处理模块.----Audio Unit Framework Reference.
4.CoreMIDI.framework:提供底层MIDI服务. ---- Core MIDI Framework Reference.
5.MediaToolbox.framework:提供访问音频分接开关的接口.
Core Audio是一个基于C的接口,支持操作立体声音频,你可以使用Core Audio在iOS应用程序中生成、录制、混合以及播放音频。你还可以使用Core Audio来触发手机设备的震动功能。
更多Core Audio的信息,参考Core Audio OverView. 关于如何使用Audio ToolBox Framework播放音频,参考Audio Queue Services Programming Guide。
----4.Core Graphics Framework
CoreGraphics framework包含Quartz 2D绘图API接口。Quartz是OSX中先进的、基于矢量绘图引擎。它提供了支持基于路径图,反锯齿的渲染、渐变、图片、颜色、坐标空间转换和PDF文档创建、显示和解析。虽然API是基于C的,但是却采用了基于对象的方式抽象了画图对象,使它更容易存储和重用你的图像内容。
更多关于如何使用Quartz绘图,参考Quartz 2D Programming Guide和Core Graphics Framework Reference。
----5.Core Image Framework
iOS5引入,提供了一套强大的内置过滤器用于操作视频和静态图片。你可以使用内置的过滤器实现简单的操作(触摸纠正照片)以及高级的操作(面部检测)。使用这些过滤器的优势是,它们在以无损的方式运作,保证你的原始图像是不会改变。此外,Core Image利用可用的CPU和GPU处理能力,确保操作是快速有效的。
CIImage类提供了访问标准过滤器的方法,你可以使用它来提高照片的质量。创建其他类型的过滤器,你可以创建和配置一个CIFilter对象实现你需要的过滤器。
更多关于Core Image Framework里类和过滤器的信息,参考 Core Image Reference Collection。
----Core MIDI Framework
iOS4.2引入,提供了标准的方法与MIDI设备通信,包括硬件键盘和合成器。你用这个框架来发送和接收MIDI的消息以及与能连接到iOS设备的设备交互(通过网路相连或者桥接器)。
更多关于这个框架的信息,参考 Core MIDI Framework Reference
----Core Text Framework
iOS3.2引入,包含一组简单的、高性能的基于C的接口布局文本和处理文字。Core Image framework提供了一个完整的文本布局引擎,您可以管理文本在屏幕上的位置,你管理的文本可以使用不同的字体以及渲染属性。
这个框架主要用于处理复杂文本,比如文本处理程序。如果你的应用程序只需要简单的文本输入和显示,你应该继续使用UIKit中的文本类。
更多关于Core Text接口的信息,参考 Core Text Programming Guide和Core Text Reference Collection。
----Core Video Framework
iOS4引入,提供接口导入和导出图像数据和图像元素据,这个框架利用Core Graphics数据类型和函数支持所有iOS上可用的图像类型。
iOS6之后,你可以使用这个框架来访问IPTC、EXIF元素据属性和图像。更多这个框架的函数和数据类型,参考 Image I/O ReferenceCollection。
----GLKit Framework
iOS5引入,包含一组基础工具类,简化了创建OpenGL ES2.0程序。GLKit支持四个关键领域的应用开发:
1、GLKView和GLKViewController提供一个标准的实现视图和关联启用OpenGL ES的渲染循环。视图管理层framebuffer对象代表应用程序,你的程序只需要往上面画。
2、GLKTextureLoader提供了图像转换和加载程序到您的应用程序,让它自动加载纹理图像到你的上下文,它可以同步或一部加载纹理。异步加载纹理时,您的应用程序提供了完成处理block,当你的被加载到上下文的时候触发。
3、框架提供了实现GLKit向量、矩阵、四元素以及矩阵堆栈操作,提供相同的功能在Open GL ES 1.1中
4、GLKBaseEffect、GLKSkyboxEffect和GLKReflectionMapEffect类提供现有的、可配置的图形着色器,实现常用的图形操作。特别是在OpenGL ES 1.1规范中,GLKBaseEffect类实现了照明和素材模型,简化了从OpenGL ES1.1到OpenGL ES 2.0迁移所需的工作。
更多关于GLKit框架中类的介绍,参考 GLKit Framework Reference.
----Media Player Framework
提供播放音频和视频内容高层支持,你可以使用系统标准接口播放视频。
在iOS3.0,增加对用户iTunes音乐库的访问支持,你可以播放单个音乐和音乐列表,搜索歌曲以及呈现媒体选择界面给用户。
在iOS3.2,增加了视频窗口的大小调整接口(以前视频只能是全屏的)。此外,增加了众多的接口来配置和管理电影的播放。
在iOS5,增加了“正在播放”信息在锁屏界面。这些信息可以通过AirPlay显示在Apple TV上。还有接口能监测视频是否正在使用AirPlay显示。
更多关于Media Player Framework中类的信息,参考Media Player Framework Reference.更多关于如何使用iTunes列表的信息,参考 iPod Library AccessProgramming Guide。
----OpenAL Framework
OpenAL接口是一个跨平台的音频接口,你可以在游戏或其他程序中用它来完成高性能、高质量的音频服务。因为是一个跨平台的OpenAL标准,所以很容易使用它来实现跨平台。
更多OpenAL的信息,以及如何使用它,参考http://www.openal.org
----OpenGL ES Framework
提供工具来绘制2D和3D内容。它是一个基于C的框架,与设备硬件紧密合作,为全屏游戏提供高帧率渲染。通常OpenGL框架结合EAGL接口使用,这些接口是OpenGL ES框架的一部分,在OpenGL ES绘画代码和UIKit框架中的视图、窗口对象之间提供接口。
iOS3.0之后,包含了既支持OpenGL ES 2.0又支持OpenGL ES 1.1的接口规范。2.0规范提供了支持片段或顶点着色的着色器(仅支持部分iOS设备,且iOS系统在3.0以上)。1.1规范支持所有iOS设备以及所有iOS系统版本。
更多关于如何在应用程序中使用OpenGL ES的信息,参考OpenGL ES Programming Guide for iOS。
----Quartz Core Framework
包含Core Animation接口,Core Animation是一个先进的动画合成技术,优化渲染路径来实现复杂的动画和视觉效果。它提供了一个高层次的OC接口(使用硬件性能)来配置动画效果,你可以使用OC接口创建自定义的动画。
更多关于如何在程序中使用Core Animation的信息,参考Core Animation Programming Guide以及Core Animation ReferenceCollection。