熟悉系统框架

2016-09-03  本文已影响20人  Givenbmli

虽说不使用系统框架编写Objective-C代码,但几乎没人那么做.即便是NSObject这个标准的根类,也属于Foundation框架而非语言本身若不使用Foundation,就必须自己编写跟类,同时还有自己来写collection、事件循环、以及其他的会用到的类.此外,若不用系统框架,就无法使用Object-C来开发Mac OS X 及 iOS 应用程序了.系统框架很强大,不过它是历经多年研发才成了今天这样子的.因此里面也许会有不和时宜而且用起来很蹩脚的地方但也会遗失的珍宝藏于其间.

熟悉系统框架

编写Objective-C应用程序时几乎都会用到系统框架,其中提供了许多编程中经常使用的类,比如collection.如是不了解系统框架所提供的内容,那么就可能会把其中已经实现过的东西又重新写了一遍用户升级操作系统后,你开发的应用程序也可以使用最新版的系统库了.所以说如果直接使用这些框架中的类,那么应用程序就可得益于新版系统库所带来的改进,而开发者也无需手动跟新其代码了.

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

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

开发者会碰到的主要框架Foundation,像是NSObject、NSArray、NSDictionary等类都在其中.Foundation框架中的类,使用NS这个前缀,此前缀是Objective-C语言用作NeXTSTEP 操作系统的编程语言是首都确定的Foundation框架真可谓所有Objective-C应用程序的"基础"若是没有它,那么本书大部分内容就不知所云了.

Foundation框架不仅提供了collection等基础核心功能,而且还提供了字符串处理这样的复杂功能能,比方说NSLinguisticTagger可以解析字符串并找到其中的全部名词、动词、代词等.总而言之,Foundation所提供的功能远远不止那几个基础类.

还有个与Foundation相伴的框架叫做CoreFoundation.虽然从技术上讲CoreFoundation框架不是Objective-C框架,叫做但它确是编写Objective-C应用程序时所应熟悉的重要框架,Foundation框架中的许多功能,都可以在此框架找到对应的C语言和API.CoreFoundation与Foundation不仅名字相似,而且还有跟为紧密的联系.有个功能叫做"无缝桥接",可以把CoreFoundation中的C语言数据结构平滑转换为Foundation中的Objective-C对象,也可以反向装换.比方说Foundation框架中的字符串是NSSting,而它可以转换CoreFoundation里与之等效的CFSting对象无缝桥接计数是用某些相当复杂的代码实现出来的,这些代码可以使运行期系统把CoreFoundation框架中的对象视为普通的Objective-C对象.但是,像无缝桥接那么复杂的技术想自己来编写代码实现它,可不太容易.开发程序是可以使用此功能,但若决定以手工编码的方式来复刻这套机制则需认真审视自己的想法了.

未完待续

上一篇下一篇

猜你喜欢

热点阅读