转载

iOS --系统框架

系统框架

将一系列代码封装为动态库, 并在其中放入描述其接口的头文件, 这样做出来的东西就叫做框架,? 有时候为 iOS 系统平台构建的第三方框架所用的是静态库, 这是因为 iOS 应用程序不允许包含动态库, 这些东西严格来说并不是真正的框架,然而也经常视为框架, 不过,所有 iOS 平台的系统框架仍然使用动态库.

在为 Mac OS X 或 iOS 系统开发 '带图形界面的应用程序时', 会用到名为 Cocoa 框架, 在 iOS 上称为 Cocoa Touch ,其实 Cocoa 本身并不是框架, 但是里面集成了一批创建应用程序是时经常会用到的框架.

开发者会碰到的主要框架就是 Foundation ,像是 NSObject, NSArray, NSDictionary 等类都在其中, Foundation 框架中的类, 使用 NS 这个前缀,此前缀是在 OC 语言用作 NeXTSTEP 操作系统的编程语言时首度确定的, Foundation 框架可谓是 OC 应用程序的基础.

还有个与 Foundation 框架 相伴的框架, 叫做 CoreFoundation ,虽然从技术上讲, CoreFoundation 框架不是 OC 框架, 但是它却是编写 OC 应用程序时所应熟悉的重要框架,

Foundation 框架中的许多功能, 都可以在此框架中找到对应的 C 语言 API, CoreFoundation 框架不仅与 Foundation 名字相似, 而且还有更为紧致的联系, 有个功能叫做 '无缝桥接', 可以把 CoreFoundation 中的 C语言 数据结构 平滑转换为 Foundation 中的 OC 对象, 也可以反向装换.? 比方说, Foundation 框架中的字符串是 NSString, 而它可以转换为 CoreFoundation 里面与之等效的 CFString 对象, 无缝桥接 技术是用某些相当复杂的代码实现出来的, 这些代码可以使得运行期系统把 CoreFoundation 框架中的对象视为普通的 OC 对象

除了 Foundation 与 CoreFoundation 之外, 还有很多系统库, 例如:

CFNetwork 此框架提供了 C语言 级别的网络通信能力,

CoreAudio? 该框架所提供的 C语言 API 可以用来操作设备上的音频硬件, 这个框架属于比较搬用的那种,因为音频处理本身及很复杂,

AVFoundation 此框架所提供的 OC 对象可用来回放并录制视频及音频, 比如能够在 UI 视图类里面播放视频.

CoreData 此框架所提供的 OC 接口可将对象放入数据库, 便于持久保存,CoreData 会处理数据的获取及存储事宜, 而且可以跨越 Mac OS X 及 iOS 平台.

CoreText 此框架提供的 C语言 接口可以高效执行文字排版及渲染操作.

通过此处列出的这几个框架, 可以看出 OC 变成的一项重要特点: 经常需要使用底层的 C语言 API. 用 C语言 来实现 API 的好处是,可以绕过 OC 的运行期系统,从而提升执行速度, 当然, 由于 ARC 只负责 OC 的对象, 所以使用这些 API 时尤其注意内存管理问题. 若想使用这种框架, 一定要熟悉 C语言 基础才行.

Mac OS X 和 iOS 这两个平台的核心 UI 框架分别叫做 AppKit 及 UIKit, 它们都提供了构建在 Foundation 与 CoreFoundaiton 之上的 OC 类, 框架里面含有 UI 元素, 也含有粘合机制, 令开发者可将所有相关内容组装为 应用程序,在这些主要的 UI 框架之下,是 CoreAnimation 与 CoreGraphics 框架.

CoreAnimation 是用 OC 语言写成的, 它提供了一些工具,而 UI 框架则是用这些工具来渲染图形并播放动画, 开发者编程时可能从来不会深入到这种级别, 不过知道该框架总是好的. CoreAnimation 本身并不是框架, 它是 QuartzCore 框架的一部分.

CoreGraphics 框架以 C语言 写成,其中提供了 2D 渲染所必备的数据结构与函数, 例如:

其中定义了 CGpoint ,CGSize, CGRect,等数据结构,而 UIKit 框架中的 UIView 类在确定视图之间的相对位置时, 这些数据结构都要用到.

还有许多框架构建在 UI 框架之上,比方说 MapKit 框架, 它可以为 iOS 程序提供地图功能, 又比如 Social 框架.提供了社交网络功能

总结:

许多系统框架都可以直接使用, 其中最重要的是 Foundation 与 CoreFoundation 这两个框架提供了构建应用程序所需要的许多核心功能.

很多常见的任务都能用框架来做, 例如音频与视频处理,网络通信,数据管理.

用纯 C写成的框架与 用 OC 写成的一样重要,若想成为优秀的开发者,应该掌握 C语言 的核心概念.

  • 作者:dingzhijie

  • 链接:http://www.jianshu.com/p/bacd8d179710

  • 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

正文到此结束
Loading...