**部分 Cocoa概述和基础
第1章 Cocoa介绍
Cocoa为创建应用程序提供了一个功能丰富的支撑层。它拥有一个包罗万象的面向对象API集,与Mac OS X提供的众多技术相辅相成。这些技术大部分继承自NeXTSTEP操作系统,而另一些则源于Mac OS X的内核BSD Unix系统。还有一些技术源于早期的Macintosh环境,但已经更新升级,能与现代操作系统共同工作。多数情况下您都能毫无察觉地享用这些底层技术带来的优势,而且从本质上来说是免费而自由地使用。有时候您可能也要直接使用这些技术,鉴于Cocoa**的构建方式,只需简单而直接的API调用即可。
本章概述了Mac OS X的编程环境和Cocoa在其中的地位。接着您将学到组成Cocoa API的其中两个框架(Framework)——Foundation和Application Kit,当然还有它们提供的功能。
Mac OS X编程环境
Mac OS X提供了五个主要的应用程序环境:
Carbon
它是一组工作在Mac OS X上的面向过程的API。这些接口*初继承自早期的Mac OS Toolbox API集合,经过修改后,使其适合Mac OS X的保护内存环境和抢占式任务调度。作为一套过渡性API,Carbon为开发人员提供了一条明确的途径:无需完全重写编码,就能将早先**的应用程序到移植Mac OS X上。比如AdobePhotoshop CS2和Microsoft Office 2004都是Carbon应用程序。如果你想了解更多关于Carbon的知识,请查看Xcode帮助中的开发文档或者参阅《LearningCarbon》(O’Reilly出版)。
Cocoa它是一组面向对象的API,这些API源于NeXT操作系统的技术,而这些技术又利用了Carbon的很多特性。使用Cocoa APl进行编程正是本书的**。很多Mac OS X中内建的应用程序,如Mail和Safari都是使用Cocoa编写的。此外,很多苹果机上的*新应用程序,例如iLife套件,iChat及Photo Booth,也都使用了Cocoa。
Java它是一个健壮而快捷的虚拟机环境,用于运行使用Java开发工具包(JDK)开发的应用程序。Java应用程序通常具有跨平台特性,无需修改和重新编译,就能在多种计算环境中运行。
BSD UnixMac OS X的BSD层提供了丰富、健壮、成熟的工具集和系统调用。标准的BSD工具,实用工具,API及函数都可用于应用程序。命令行环境就是这层的一部分。
Classic
它是一种兼容环境,用于支持系统运行早先的Mac OS X或Mac OS 9下的应用程序,这些程序没有后续更新,不能很好地发挥Mac OS X的优势。Classic从本质上讲是Mac OS 9的改进版本,它运行在一个与操作系统其他部分存在特殊钩子操作(hook)的进程当中。随着时间的推移,越来越多的应用程序已移植到Mac OS X上运行,使得Classic变得不那么重要,从Mac OS X 10.5开始,苹果公司已正式废弃了Classic环境,不在Mac OS X中提供。
所有这些应用程序环境都在一定程度上依赖于操作系统的其他部分。图1.1给出了简要的层次图示,描绘了Mac OS X应用程序的环境,以及它们与操作系统其他主要部分的关系。如图1-1所示,Mac OS X的应用程序环境均依赖于操作系统底层所提供的功能。这些功能大体上可分为两个主要部分:一个是Core Foundation,它向Cocoa,Carbon,Java框架提供了一套通用的应用集和核心服务;另一个是内核环境(kernel environment),它是操作系统底层基于Unix的核心。
Cocoa定义
Cocoa是一个先进的面向对象框架,主要用于构建运行在苹果Mac OS X上的应用程序。它把共享对象库,运行环境系统及开发环境完整地整合在了一起。Cocoa提供的基础体系满足大部分图形界面应用程序的典型需要,并将应用程序与操作系统内部的工作互相隔离。
可以把Cocoa理解为一个对象层,它充当程序与操作系统之间的媒介与协调人的角色。这些对象覆盖了从基本类型的简单封装,如字符串和数组,到复杂的功能,如分布式计算和**影像处理。它们被设计于一个复杂而精巧的体系之上,以简化编程工作,轻松创建图形界面的应用程序。
基于Cocoa的应用程序并不仅局限于使用Cocoa框架中的特性。它们也能使用Mac OS X中的其他框架的全部功能,例如Quartz、QuickTime、OpenGL、ColorSync等等。由于Mac OS X是建立在一个基于BSD的坚固系统Darwin之上,Cocoa应用程序可使用Unix系统的所有核心功能,并按程序需要使用底层的文件系统、网络服务和设备。
Cocoa的历史
Cocoa其实已存在很长时间,几乎与Macintosh一样久远。它很大程度上基于OpenStep,于1987年与典雅的NeXT cube电脑一起以NeXTSTEP的名字公布于世。当时NeXTSTEP的目标正如只有Steve Jobs才敢宣称的“创造下一个疯狂而伟大的事物”。它的发展经历很多版本,被众多公司采纳作为开发和部署环境,并被广泛报道,十分火热。它基于领先当时世面上任何产品很多年的设计,成为一种强悍的技术延续至今。NeXTSTEP建立在由加州大学伯克利分校(UC Berkeley)开发的BSD Unix和卡内基梅隆大学(Carnegie—Mellon University)开发的Mach微内核基础之上。它利用了Adobe公司开发的Display PostScript技术(允许使用与PostScript页面描述语言相同的代码)来实现在屏幕上显示文档和输出打印文档。NeXTSTEP包含一组被称为“框架”(Framework)的库,还有一些工具,使开发人员能够用Objective-C语言构建应用程序。
……