转自:http://www.guomii.com/posts/23898
框架:
每个应用都是由两个部分组成:一部分是你编写的代码,另一部分就是苹果公司提供的框架(framework)。框架中包含了能够被你的应用调用的方法库。一个框架同时可以被多个应用访问。
你开发的任何应用都会与多个框架相连接。通过框架提供的应用程序编程接口(API)便能利用它。API 是在头文件中声明的,指定了可用的对象、类、数据结构以及协议。苹果编写的框架预先估测了你可能需要实现的基本功能。通过使用框架既能节省时间和精力,又能保证代码的高效和稳定。只有通过系统框架才能够访问底层硬件。
主要框架纵览:
框架本身是一个文件夹,里面含有公用库文件、用来访问这些库的头文件以及其他图片和声音等资源文件。公共库定义了应用可以调用的函数和方法。
在你的开发过程中可以使用 iOS 提供的众多框架,将框架添加到工程中你的应用就可以链接它了。多数应用会链接到 Foundation、UIKit 和 Core Graphics 框架。根据你选择的应用模板不同,可能还会包含其他框架。如果默认的核心框架无法满足你的开发需要,你随时都可以往工程里添加另外的框架。
如何查看 HelloWorld.xcodeproj 工程中包含的框架…
- 在 Xcode 中打开 HelloWorld.xcodeproj 工程(如果尚未打开的话)。在之前的《你的第一个 iOS 应用》教程中你曾经创建了这个工程。
- 打开工程导航栏中的 Frameworks(框架)文件夹,点按左侧的三角形便可以展开它。
你应该可以看到 UIKit.framework、Foundation.framework 和 CoreGraphics.framework 三个框架。- 点按各框架左侧的三角形展开框架后,再点按 Headers(头文件)文件夹左侧的三角形便可以查看里面的头文件。
每个框架都从属于 iOS 系统的一个层级。每个层级都建立在它下面的层级基础上。请尽可能使用高层级的框架,避免使用低层级的框架。较高层级的框架为低层级结构提供面向对象的抽象。
iOS 应用是基于 Foundation 和 UIKit 框架的
当你开始编程时,你主要会使用 Foundation 和 UIKit 框架,它们能够覆盖你的大部分开发需要。
Foundation 框架为所有应用提供基本系统服务
无论是你的应用还是 UIKit 框架等众多框架都是建立在 Foundation 框架的基础架构之上的。Foundation 框架为 Core Foundation 框架的许多功能提供了 Objective-C 的封装。
Foundation 框架可以用来:
- 创建并管理群体,比如数组和字典。
- 访问你应用中存储的图片等资源文件。
- 创建并管理字符串。
- 发送并观察通知。
- 创建日期和时间对象。
- 自动发现 IP 网络上的设备。
- 操作 URL 流。
- 异步执行代码。
在《你的第一个 iOS 应用》教程中,你曾使用了 Foundation 框架。比如,你使用了 NSString 类的实例来存储用户在 userName 输入的文字。你还使用了 Foundation 的实例方法 initWithFormat: 来创建欢迎词字符串。
UIKit 框架提供了用于创建触摸界面的类
所有 iOS 应用都基于 UIKit 框架,缺少了它你的应用将无法运行。UIKit 提供了绘制画面、处理事件和创建通用用户界面元素的基础架构。UIKit 还会管理要显示在屏幕上的内容从而对复杂的应用进行组织。
UIKit 框架可以用来:
- 创建并管理用户界面。
- 处理触摸和动作事件。
- 显示文字和网页内容。
- 为多任务优化你的应用。
- 创建自定义的用户界面元素。
在《你的第一个 iOS 应用》教程中,你曾使用了 UIKit 框架。在检查应用是如何启动的时候,你曾看到 UIApplicationMain 函数创建了一个 UIApplication 类的实例,它会处理接收到的用户操作事件。你实现了 协议从而能够让用户通过点按 Done 按钮收起键盘。实际上,你在使用 UITextField、UILabel 和 UIButton 类创建整个用户界面的时候就已经用到了 UIKit。
你还应该了解其他几个重要的框架
Core Data、Core Graphics、Core Animation 和 OpenGL ES 框架都是十分先进的技术。尽管这些框架对你的应用而言十分重要,但要掌握它们还需加以学习。
Core Data 框架管理应用的数据模型
Core Data 提供了对象图管理。使用 Core Data 可以创建模型对象,也叫被管理对象。要管理这些对象间的关系以及变更其中的数据需要用到本框架。Core Data 的优势在于使用内置的 SQlite 技术来存储和管理数据。
Core Data 框架可以用来:
- 向存储器中保存并取回对象。
- 支持基本的撤销/重做。
- 自动校验属性值。
- 过滤、分组并组织内存数据。
- 使用 [NSFetchedResultsController] 管理表格视图的结果。
- 支持 document-based(基于文档的)应用。
Core Graphics 框架帮你创建图形
对 iOS 应用来说,高品质的图形至关重要。在 iOS 中创建图形的最简单、最有效的方法是使用事先渲染好的 UIKit 框架标准视图与控件资源并让 iOS 自行绘制。若你需要创建复杂的图形,Core Graphics 还为你提供了底层的图形库。Core Graphics 也叫做 Quartz,能够处理原生的二维(2D)矢量图和基于图片的渲染工作。
Core Graphics 框架可以用来:
- 进行基于路径的图形绘制。
- 进行抗锯齿渲染。
- 添加渐变填充、图像和颜色。
- 使用坐标空间变换。
- 创建、显示以及分析 PDF 文档。
Core Animation 能够让你制作高级的动画和视觉效果
UIKit 提供了基于 Core Animation 技术的动画效果。如果你需要比 UIKit 自带的效果更高级的动画,你可以直接使用 Core Animation。Core Animation 的接口在 Quartz Core 框架中。使用 Core Animation,你可以创建组合图层对象,然后操作、旋转、缩放、变形等。并且通过使用 Core Animation 中常见的视图式抽象可以创建动态用户界面而无需使用底层图形 API 例如 OpenGL ES。
Core Animation 框架可以用来:
- 创建自定义动画。
- 对动画添加时间控制。
- 支持关键帧动画。
- 约束图形布局的比例。
- 将多个图层变为原子更新。
OpenGL ES 框架提供 2D 和 3D 绘制工具
OpenGL ES 支持基本的 2D 和 3D 绘图。苹果公司实现的 OpenGL ES 标准紧密配合设备的硬件,可以用来制作高帧率的全屏游戏类应用。
OpenGL ES 框架可以用来:
- 创建 2D 和 3D 图形。
- 制作更多复杂的图形,例如数据可视化、飞行模拟或者视频游戏等。
- 访问底层图形硬件。
向工程里添加你需要的其他框架
你可以在应用开发中使用许多框架。当你决定使用一个尚未包含在工程里的框架时,你需要将该框架添加到你的工程中,这样应用才可以链接到该框架。
如何将 HelloWorld.xcodeproj 工程链接到其他的框架…
- 在 Xcode 中打开 HelloWorld.xcodeproj 工程(如果尚未打开的话)。
- 在工程导航栏中点选 HelloWorld 工程,使其在工程编辑器中显示出来。
- 在 Targets 列表里点选 HelloWorld,将其指定为你想要添加框架的目标。
- 点选工程编辑器顶端的 Build Phases 标签。
- 打开 Link Binary With Libraries 区块,点按它左侧的三角形即可展开。
- 点按添加按钮(+)。
- 在弹出的列表里选择一个框架并点按 Add 添加。
要查看完整的框架列表以及了解关于这些框架的知识,请阅读《iOS Technology Overview》文档。