本节书摘来自异步社区《iOS 9 开发指南》一书中的第1章,第1.4节 iOS 9中的常用开发框架,作者 管蕾,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.4 iOS 9中的常用开发框架
iOS 9 开发指南
图片 2 知识点讲解:光盘:视频知识点第1章 iOS 9中的常用开发框架.mp4
为了提高开发iOS程序的效率,除了可以使用Xcode集成开发工具之外,还可以使用第三方提供的框架,这些框架为我们提供了完整的项目解决方案,是由许多类、方法、函数和文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易。在OSX下的Mac操作系统中,大约存在80个框架,这些框架可以用来开发应用程序,处理Mac的Address Book结构、刻制CD、播放DVD、使用QuickTime播放电影和播放歌曲等。
在iOS的众多框架中,其中有两个最为常用的框架:Foundation框架和Cocoa框架。
1.4.1 Foundation框架简介
在OSX下的Mac操作系统中,为所有程序开发奠定基础的框架称为Foundation框架。该框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组、字典和集合。其他功能包括处理日期和时间、自动化的内存管理、处理基础文件系统、存储(或归档)对象以及处理几何数据结构(如点和长方形)。
Foundation头文件的存储目录是:
/System/Library/Frameworks/Foundation.framework/Headers
上述头文件实际上与其存储位置的其他目录相链接。请读者查看这个目录中存储在系统上的Foundation框架文档,熟悉它的内容和用法简介。Foundation框架文档存储在我们计算机系统中(位于/Develop/Documentation目录中),另外Apple网站上也提供了此说明文档。大多数文档为HTML格式的文件,可以通过浏览器,同时也提供了Acrobat pdf文件。这个文档中包含Foundation的所有类及其实现的所有方法和函数的描述。
如果正在使用Xcode开发程序,可以通过Xcode的Help菜单中的Documentation窗口轻松访问文档。通过这个窗口,可以轻松搜索和访问存储在计算机本机中或者在线的文档。如果正在Xcode中编辑文件并且想要快速访问某个特定头文件、方法或类的文档,可以通过高亮显示编辑器窗口中的文本并右键单击的方法来实现。在出现的菜单中,可以适当选择Find Selected Text in Documentation或者Find Selected Text in API Reference。Xcode将搜索文档库,并显示与查询相匹配的结果。
看一看它是如何工作的。类NSString是一个Foundation类,可以使用它来处理字符串。假设正在编辑某个使用该类的程序,并且想要获得更多关于这个类及其方法的信息,无论何时,当单词NSString出现在编辑窗口时,都可以将其高亮显示并右键单击。如果从出现的菜单中选择Find Selected Text in API Reference,会得到一个外观与图1-26类似的文档窗口。
如果向下滚动标有NSString Class Reference的面板,将发现(在其他内容中间)一个该类所支持的所有方法的列表。这是一个能够获得有关实现哪些方法等信息的便捷途径,包括它们如何工作以及它们的预期参数。
读者们可以在线访问developer.apple.com/referencelibrary,打开Foundation参考文档(通过Cocoa、Frameworks和Foundation Framework Reference链接),在这个站点中还能够发现一些介绍某些特定编程问题的文档,例如内存管理、字符串和文件管理。除非订阅的是某个特定文档集,否则在线文档要比存储在计算机硬盘中的文档从时间上讲更新一些,如图1-26所示。
在Foundation框架中包括了大量可供使用的类、方法和函数。在Mac OS X上,有125个可用的头文件。作为一种简便的形式,我们可以使用如下代码头文件。
#import <Foundation/Foundation.h>
因为Foundation.h文件实际上导入了其他所有Foundation头文件,所以不必担心是否导入了正确的头文件,Xcode会自动将这个头文件插入到程序中。虽然使用上述代码会显著地增加程序的编译时间,但是通过使用预编译的头文件,可以避免这些额外的时间开销。预编译的头文件是经过编译器预先处理过的文件。在默认情况下,所有Xcode项目都会受益于预编译的头文件。在本章使用每个对象时都会用到这些特定的头文件,这会有助于我们熟悉每个头文件所包含的内容。
1.4.2 Cocoa框架简介
Application Kit框架包含广泛的类和方法,它们能够开发交互式图形应用程序,使得开发文本、菜单、工具栏、表、文档、剪贴板和窗口等应用变得十分简便。在Mac OS X操作系统中,术语Cocoa是指Foundation框架和Application kit框架。术语Cocoa Touch是指Foundation框架和UIKit框架。由此可见,Cocoa是一种支持应用程序提供丰富用户体验的框架,它实际上由如下两个框架组成。
Foundation框架。
Application Kit(或AppKit)框架。
其中后者用于提供与窗口、按钮、列表等相关的类。在编程语言中,通常使用示意图来说明框架最顶层应用程序与底层硬件之间的层次,图1-27所示就是一个这样的图。
User:用户。
Application:应用程序。
Cocoa(Foundation and AppKit Frameworks):Cocoa(Foundation和AppKit框架)。
Application Services:应用程序服务。
Core Services:核心服务。
Mac OS X kernel:Mac OS X内核。
Computer Resources(memory, disk,display, etc.):计算机资源(内存、磁盘、显示器等)。
内核以设备驱动程序的形式提供与硬件的底层通信,它负责管理系统资源,包括调度要执行的程序、管理内存和电源,以及执行基本的I/O操作。
核心服务提供的支持比它上面层次更加底层或更加“核心”。例如,在Mac OS X中主要包含了对集合、网络、调试、文件管理、文件夹、内存管理、线程、时间和电源的管理。
应用程序服务层包含对打印和图形呈现的支持,包括Quartz、OpenGL和Quicktime。由此可见,Cocoa层直接位于应用程序层之下。正如图1-27中指出的那样,Cocoa包括Foundation和AppKit框架。Foundation框架提供的类用于处理集合、字符串、内存管理、文件系统、存档等。通过AppKit框架中提供的类,可以管理视图、窗口和文档等用户界面。在很多情况下,Foundation框架为底层核心服务层(主要用过程化的C语言编写)中定义的数据结构定义了一种面向对象的映射。
Cocoa框架用于Mac OS X桌面与笔记本电脑的应用程序开发,而Cocoa Touch框架用于iPhone与iTouch的应用程序开发。Cocoa和Cocoa Touch都有Foundation框架。然而在Cocoa Touch下,UIKit代替了AppKit框架,以便为很多相同类型的对象提供支持,如窗口、视图、按钮和文本域等。另外,Cocoa Touch还提供使用加速器(它与GPS和Wi-Fi信号一样都能跟踪位置)的类和触摸式界面,并且去掉了不需要的类,如支持打印的类。
1.4.3 iOS程序框架
总的来说iOS程序有两类框架:一类是游戏框架,另一类是非游戏框架。接下来将要介绍的是非游戏框架,即基于iPhone用户界面标准控件的程序框架。
典型的iOS程序包含一个Window(窗口)和几个UIViewController(视图控制器),每个UIViewController可以管理多个UIView(在iPhone里你看到的、感觉到的都是UIView,也可能是UITableView、UIWebView和UIImageView等)。这些UIView之间如何进行层次迭放、显示、隐藏、旋转和移动等都由UIViewController进行管理,而UIViewController之间的切换,通常情况是通过UINavigationController、UITabBarController或UISplitViewController进行切换。