创建一个Cocoa应用程序,而又不必编写哪怕一行代码的情况是可能的。在Xcode中建立一个新的Cocoa工程,然后进行连编就可以了。当然,这个应用程序不做很多工作,至少不做很多有趣的工作。但是,这个极度简单的应用程序在鼠标双击时仍然可以启动,可以在Dock上显示图标,可以显示其主菜单和窗口(标题为“Window”),可以根据命令将自身隐藏,可以和其它运行着的应用程序互动,还可以处理退出命令。您可以对这个窗口进行移动、调整尺寸、最小化、和关闭,甚至可以打印包含在窗口中的空白部分。
想像一下如果加入一点代码,您可以做些什么。
在编程方面,Cocoa为开发者提供很多免费或代价很低的支持。当然,要成为一个高效率的Cocoa开发者意味着要熟悉新的概念、设计模式、编程接口、和开发工具,而这方面的努力并不是无足轻重的。但是熟能生巧,编程在很大程度上变成一种将Cocoa提供的编程组件和负责定义特殊逻辑的定制对象及代码装配在一起、再将这些装配物组合在一起的练习。
接下来的部分是一个简短的列表,说明Cocoa如何为您的应用程序增加价值,而只需要您加入少量的工作(有时候甚至不需要):
基本应用程序框架—Cocoa为事件驱动的行为和应用程序、窗口、工作空间(workspace)的管理提供了基础设施。在大多数情况下,您不必直接处理事件或发送任何描画命令给渲染库。
用户界面对象—Cocoa为应用程序的用户界面提供了丰富而又现成的对象。这些对象的大部分都在Interface Builder(创建用户界面的开发工具)的选盘上,您只要简单地将对象从选盘拖拽到界面上,配置好属性,并将它连接到其它对象上就可以了(当然,您也可以通过编程的方式对其进行实例化、配置、以及建立对象之间的连接)。下面是一些Cocoa用户界面对象的实例:
windows |
text fields |
radio buttons |
drawers |
sheets |
tab views |
table views |
browsers |
pop-up lists |
sliders |
image views |
color wells |
combo boxes |
scroll views |
text views |
steppers |
此外,Cocoa还有一些支持用户界面的技术,包括提高可访问性、执行正当性检查、以及连接用户界面对象和定制对象需要的技术。
描画和图像处理—Cocoa带有一个可以锁定图形焦点并将视图(或视图的一部分)标识为“变脏” 的框架,从而支持高效的定制视图描画。Cocoa中还有一些描画贝齐尔(Bezier)路径、执行远交变换、合成图像、以及创建不同图像表示的编程工具类。
系统交互—Cocoa使您的应用程序可以和文件系统、工作空间、以及其它应用程序进行交互(或使用它们提供的服务)。
数据交换—Cocoa通过拷贝-粘贴、拖拽模型、以及Services菜单简化了应用程序内部和应用程序之间的数据交换。
性能—为了增强应用程序的性能,Cocoa提供了多线程、空闲时间处理、资源的迟缓加载、内存管理、和运行环操作方面的编程支持。
基于文档的应用程序—Cocoa为应用程序提供一种可以包含无限数量的文档架构。每个文档都包含在它自己的窗口中(比如一个字处理程序)。事实上,如果您选择“Document-based application(基于文档的应用程序)”工程类型,那么这类应用程序需要的很多组件就自动被创建了。
脚本处理—通过应用程序脚本能力信息和一组支持脚本的Cocoa类,您就可以使自己的应用程序具有脚本能力。也就是说,您的应用程序可以响应由AppleScript脚本发出的命令。应用程序也可以通过执行脚本或使用单独的Apple Event来向其它应用程序发送命令,或者接受其它应用程序的命令。结果是每个具有脚本能力的应用程序都可以为用户或其它应用程序提供服务。
国际化—Cocoa使用一种已经精化多年的方法来支持国际化和本地化。这种方法基于偏好语言的用户列表,将本地化的资源放到应用程序的程序包(bundle)中。Cocoa还提供产生和访问本地化字符串的工具和编程接口。而且,Cocoa中的文本操作缺省情况下是基于Unicode的,因此有利于程序的国际化。
Undo管理—您可以注册一个用户动作来和undo管理器协同工作,当用户选择合适的菜单项时,它们会处理undo(或redo)动作。Undo管理器通过独立的栈来维护undo和redo操作。
文本—Cocoa提供了一个复杂的文本系统,使您可以进行从简单到较为复杂的文本处理,简单文本处理的一个例子是在文本视图上显示可编辑的文本,复杂的处理则比如字距和连字的控制、拼写检查、和嵌入图像。
打印—和文本系统相类似,打印架构使您可以打印文档和其它应用程序内容,并进行各种控制调整。在最简单的级别上,您缺省可以打印各种视图的内容;在较为复杂的级别上,您可以定义打印的内容和格式,控制一个打印作业如何进行,以及在打印面板上添加必要的视图。
偏好设置—用户缺省设置系统基于一个系统范围内的数据库,您可以将全局或应用程序特有的偏好设置存储在这个数据库中。
连网—Cocoa包含一个分布式对象(Distributed Objects)架构,它使一个Cocoa进程可以和相同或不同的计算机上的其它进程进行通讯。这个架构还提供将Bonjour能力集成到应用程序的编程接口。
多媒体—Cocoa提供了QuickTime视频和基本音频能力的支持。