Cocoa 基本原理指南 开发环境

移动开发 iOS
本文介绍的是Cocoa 基本原理指南 开发环境,Xcode和Interface Builder是开发Cooca软件优先使用的工具。先来看本文详细介绍。

Cocoa有它自己的开发环境并不十分精确。一个原因是程序员可以使用苹果主要的开发工具—Xcode和Interface Builder—来开发Mac OS X其它应用程序环境的程序,比如Carbon;其次,开发Cocoa应用程序时完全不使用Xcode和Interface Builder也是可能的,比如,您可以使用Metrowerks的CodeWarrior来管理、编译、和调试Cocoa工程;而且,如果您实在不愿意改变,也可以使用像Emacs这样的文本编辑器来编写代码,用make file和命令行进行应用程序的连编,然后在命令行上通过gdb调试器来调试程序。

但是,Xcode和Interface Builder是开发Cooca软件优先使用的工具。它们的起源正好和Cocoa是一致的,所以在工具和框架之间存在高度的兼容性。Xcode和Interface Builder一起,使设计、管理、连编、和调试Cocoa软件工程变得非常容易。还有一个叫AppleScript Studio的工具,可以扩展应用程序的能力,您可以通过这个工具来创建具有脚本能力的Cocoa程序和通过AppleScript控制其它应用程序的程序。

Xcode

Xcode是苹果公司在Mac OS X下的集成开发环境(IDE)引擎。它负责处理从最开始到工程的最终部署这一过程中的大多数细节。您可以通过这个工具来完成如下工作:

创建和管理工程,包括指定目标的需求、依赖性、和连编的风格。

在具有语法染色、自动缩进等功能的编辑器上编写源代码。

在工程的不同组件中进行漫游和检索,包括头文件和文档。

连编工程

在图形化的源代码级调试器上调试工程

Xcode可以连编由C、C++、Objective-C、Objective-C++、和Java编写的源代码组成的工程,可以生成Mac OS X支持的所有类型的执行代码,包括命令行工具、框架、插件、内核扩展、程序包、和应用程序。Xcode允许您对连编和调试工具、可执行文件的打包方式(包括信息属性列表和本地化程序包)、连编过程(包括拷贝文件、脚本文件处理、和其它连编阶段)、以及用户界面(包括分立和多视图的代码编辑器)进行几乎无限的定制;还支持几个源代码管理系统(其中有CVS和Perforce),使您可以将文件追加到代码库、提交修改、获取更新版本、以及进行版本的比较。

图1-4显示一个Xcode工程的实例。

Cocoa 基本原理指南 开发环境

图1-4  Xcode中的TextEdit实例

Xcode特别适合用于Cocoa开发。在创建工程时,Xcode可以通过对应于Cocoa工程类型的工程模板,为您建立一个初始的开发环境。Cocoa工程类型有:应用程序(Objective-C或Java)、基于文档的应用程序(Objective-C或Java)、工具、程序包、和框架。Xcode使用GNU C编译器(gcc)来编译Cocoa软件,使用GNU源代码级调试器(gdb)来调试软件。在Cocoa开发中使用gcc和gdb从它还是NeXTSTEP(参见"一点历史"部分)的时代就开始了。对Cocoa二进制代码的编译和调试经过多年的精化、扩展、和调优。

Xcode也有一个类浏览的功能,可以查看所有导入的Cocoa框架类和您自己的定制类,还有它们的继承关系;从类浏览器中,您可以请求查看任何类的文档。Xcode还包含一些设计工具,其中有一个工具可以用于设计Core Data程序中使用的数据实体的属性和关系。

Xcode和另外一个主要的开发工具Interface Builder良好地集成在一起。在Interface Builder中,您可以定义一个类(包括超类,插座变量,和动作),并为工程中的每个类生成源代码文件的框架。在Xcode中,您可以为定制类添加插座变量和动作,然后让Interface Builder将这些实体导入到nib文件中。

请注意:简单地说,插座变量(outlet)是一个对象和另一个对象的归档连接(表示为对象中的一个实例变量);动作则是当按键或滑块这类对象被操作时,在被称为目标(target)的对象(通常是一个定制对象)中被调用的方法。Interface Builder也会把目标对象和其它对象(称为控件)之间的连接进行归档。

进一步阅读:Xcode快速指南可以使您概览Xcode,并为您提供其它开发工具文档的连接。

  1. Interface Builder 

Cocoa工程的第二个主要开发工具是Interface Builder。顾名思义,Interface Builder是用于创建用户界面的图形工具。Interface Builder在Cocoa还是NeXTSTEP的时候就已经存在了,而且从那时侯起,它就作为同类软件中的佼佼者而获得广泛的认可。很自然,它和Cocoa的结合是很紧密的。而且您也可以用它来为Carbon应用程序创建用户界面。

Interface Builder以三个主要的设计元素为中心:

Nib文件。nib文件实际上是以档案的形式对用户界面中出现的对象进行文件包装(一个封装的目录)。这种档案本质上是一种对象图,包含每个对象的信息,包括对象的尺寸及在其屏幕(如果是个窗口)或窗口内的位置信息。Cocoa应用程序中的Nib文件还包含定制类的代理引用和对象间连接信息,包括使用Cocoa绑定技术建立起来的连接。当您在Interface Builder中创建并保存一个用户界面时,重建该界面需要的所有信息都会被存在nib文件中。nib文件还可以包含界面中使用的图像和声音文件。

Interface Builder将nib文件存储在Cocoa工程中的一个本地化目录下。在连编工程时,nib文件就会被拷贝到新建的程序包中对应的本地化目录下(nib文件因此可以提供一种很好的用户界面本地化方法)。 Cocoa应用程序缺省(也就是说Xcode会自动创建)有一个主nib文件,在运行时自动被装载和显示。主nib文件包含应用程序的主菜单,并可能有一个或多个窗口。您的应用程序可以根据需要装载辅助的nib文件,比如文档或预置窗口所在的文件。

Interface Builder将nib文件的内容表示在nib文件窗口中。您也可以在nib文件窗口中定义定制类及考察对象之间的连接。

选盘。 Interface Builder的选盘(Palette)窗口中包含多个面板,或者称为“选盘”,每个选盘中包含一个彼此有关系的用户界面对象的集合。将对象从选盘拖拽到恰当的位置上就可以创建用户界面了,这里的位置可以是屏幕、窗口、各种视图、或者主菜单(选盘对象自身不一定是可见的,但是必须以某种形式影响用户界面)。当您将一个对象从选盘上拖出时,Interface Builder会实例化一个该对象的缺省实例。这个实例是一个真正的Cocoa对象,而不是运行时需要创建的实例的代理对象。如果您愿意的话,可以将您自己的定制对象放在选盘上。

查看器。 Interface Builder为用户界面上的对象提供一个查看器(称为Info窗口)。Info窗口由一系列可选择的面板组成,用于设置对象的初始属性和尺寸(虽然尺寸和很多属性也可以直接进行操作)。其中的两个面板用于建立对象之间的连接,一个基于插座变量和动作,另一个基于绑定技术。还有一个面板用于将定制类代替Application Kit框架中的超类。其它面板较为特殊,专用于建立用户界面对象和帮助标签及AppleScript事件处理器之间的关联。

图1-5显示了一个在Interface Builder中打开的nib文件,以及支持窗口。

Cocoa 基本原理指南 开发环境

图1-5  Interface Builder中TextEdit的预置窗口

用Interface Builder创建用户界面的步骤比较直接:

将窗口或面板拖拽到屏幕上(面板等同于对话框或辅助窗口)。

设置窗口的初始(或固定的)位置、尺寸、和属性。

将文本框、按键、表视图控件、和弹出式列表等对象拖到窗口或之前放好的视图对象上。

为这些对象设置初始(或固定的)位置、尺寸、和属性。

为应用程序定义定制类。

您可以直接在Interface Builder中完成这个工作,或者将事先创建好的头文件装载到Interface Builder。在进行类的定制时,可以通过Interface Builder指定插座变量和动作。

在对象之间建立绑定和连接。这有两种形式:

在应用程序的视图、控制器、和模型对象之间建立绑定关系。

把插座变量连接到它们引用的对象,接着把动作连接到目标对象中合适的方法上。

保存和测试用户界面。 Interface Builder有一个功能,可以在设计的各个阶段测试界面(定制的行为除外)。

为您定义的各个定制类创建头文件和源代码文件,这些文件会出现在关联的Xcode工程上。

Interface Builder还包含一个功能:在对一个摆好位置的对象进行移动或调整其尺寸时,会通过一些短暂出现的蓝线来显示当前位置是否遵循Aqua人机界面指南,包括推荐的尺寸、对齐、与用户界面上的其它对象或窗口边界的相对位置。

进一步阅读:有关用户界面开发工具的进一步信息,请参见Interface Builder部分。此外,"Nib文件"部分给出了nib文件及其在应用程序中如何被使用的更多信息。您还可以参考"对象之间的通讯"部分,以概要了解插座变量、目标-动作机制、以及Cocoa绑定技术。

AppleScript Studio

多年来,Mac OS一直有一个定义良好的特性,就是用户可以通过由AppleScript语言写成的脚本控制应用程序。很多用户发现这个特性是不可或缺的,因为它可以将涉及多个应用程序的复杂操作序列串接在一起。AppleScript的能力在Mac OS X系统上更进了一步。AppleScript Studio是一种开发技术,用于创建通过AppleScript脚本控制复杂用户界面的Cocoa程序。

AppleScript Studio把来自AppleScript、Xcode、Interface Builder、和Cocoa的各种元素结合起来,提供了一个创建AppleScript解决方案的开发环境。您可以通过它来制作应用程序,完成如下任务:

执行AppleScript脚本

控制应用程序的界面

控制具有脚本能力的应用程序或操作系统中支持脚本的部分

由于AppleScript Studio将AppleScript和Xcode、Interface Builder、和Cocoa集成在一起,脚本编程者可以利用这些组件各自的优势和能力。他们可以从Interface Builder选盘中拖出一组丰富的用户界面对象,根据个人的喜好进行定制;可以得到内置的Aqua用户界面指南的支持;还能够连编和维护带有多个目标和连编步骤的的复杂工程。

这个开发环境使我们有可能通过脚本对Script Editor程序(它是创建AppleScript脚本的传统工具)不能提供的能力进行控制,这些能力包括:

创建任意大的脚本

在脚本中进行检索和替代

单步脚本调试,支持各种执行方式

方便访问脚本中的处理函数和属性

灵活的字典查看器,和应用程序的脚本用语一起使用。

进一步阅读:更多信息请参见AppleScript Studio编程指南。

其它开发工具

虽然Xcode和Interface Builder是开发Cocoa应用程序的主要工具,但是还有许多工具可以使用。在一些应用程序开发阶段中,您可能会找到很多辅助的应用程序和命令行工具。

这个部分将回顾一些辅助性的开发工具并简短地讨论一些命令行工具,然而命令行工具的数量太多,即使对它们进行一个浓缩的总结也超出了本文的范围。您的最好选择就是访问/usr/bin和/usr/sbin目录下各种工具的使用手册(man页面),只要在Terminal外壳下键入man命令,后面跟着命令名称就可以了。在/Developer/Tools目录下还有一些苹果开发的命令行工具。

性能工具

下面这些应用程序用于软件性能的测量和分析。它们位于/Developer/Applications目录下。

Sampler 用于分析程序运行时的行为和内存分配。顾名思义,Sampler会按一定的时间周期对程序的函数调用栈进行采样,并在采样结束时向您显示调用频率最高的函数或方法。这种信息有助于定位消耗大量CPU时间或进行内存分配的函数或方法。

ObjectAlloc 用于跟踪各种程序的内存分配与释放行为。这种历史数据可以显示重复的内存分配行为和总体的分配趋势。对于Objective-C代码,ObjectAlloc在记录alloc调用的同时,也记录每个copy、retain、release、autorelease调用,而且还记录在Core Foundation中与这些方法相对应的函数,以及malloc(及相关)函数进行的内存分配。

MallocDebug 按分配时的调用栈顺序显示程序中当前已分配的内存块。通过这个工具一下子就可以看到您的应用程序消耗多少内存、这些内存是从哪里分配的、以及哪些函数分配了大量的内存。MallocDebug还可以找出在程序中分配的、却没有被引用的内存,因此可以帮助您发现内存泄露并跟踪这些泄露的内存是在哪里分配的。

QuartzDebug 是一个帮助您对应用程序的显示机制进行调试的工具,对大量进行描画和图像处理的应用程序特别有用。QuartzDebug包括如下几个调试选项:

自动闪烁描画模式,这种模式会在每个描画操作之后闪烁一下图形上下文。

在更新屏幕区域之前先用黄色对该区域进行描画的模式。

用于取得整个系统的窗口列表的静态快照,同时给出每个窗口的拥有者及该窗口消耗多少内存的选项。

Thread Viewer 显示一个进程中各个线程的活动。这个工具显示每个线程的活动时间线,动作在时间线上用不同的颜色表示。点击时间线可以得到与点击位置相对应的活动回溯样本。
还有一些命令行工具可以用于性能分析,比如:

top,对当前正在运行的进程进行采样统计并显示统计结果。

gprof,用于产生程序的执行轮廓

fs_usage,显示文件系统访问的统计信息

还有其它很多命令行工具可以用于性能分析。有关Cocoa应用程序开发可以用哪些性能分析工具以及性能分析的概念、技术、和策略的更多信息,请参见性能编程主题(Performance Programming Topics)文档。

请注意:性能概述对Mac OS X的性能工具进行讨论。

其它工具

您还可以发现下面的工具对Cocoa应用程序开发很有用(位于/Developer/Applications目录下):

Icon Composer和Icns Browser 您可以用Icon Composer来导入各种格式的图像,创建应用程序图标和文档图标的图标文件;还可以用Icns Browser程序来创建不同尺寸、位深度、和位掩码的图标变体。

FileMerge 这个工具可以可视化地“diffs” 各种文本文件(比如源代码文件、头文件、和属性列表),并具有选择合并的能力。Package Maker 通过Installer程序为应用程序(其它类型的软件)制作安装包。Property List Editor 这是一个编辑器,用于创建和编辑XML及较老风格的属性列表。

小结:关于Cocoa 基本原理指南 开发环境的内容介绍完了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-07-07 14:10:21

Cocoa 内省 hash

2011-07-07 13:30:32

Cocoa Core

2011-07-07 14:22:27

Cocoa 对象 生命周期

2011-08-10 19:33:09

Cocoa对象

2012-01-12 14:37:34

jQuery

2011-11-29 12:17:00

2009-02-24 09:43:00

IP电话原理

2016-08-17 23:53:29

网络爬虫抓取系统

2021-02-08 21:40:04

SockmapBPF存储

2019-11-28 10:45:28

ZooKeeper源码分布式

2013-04-07 14:09:55

Android应用基本

2016-08-18 00:04:09

网络爬虫抓取系统服务器

2020-03-21 14:57:14

手机定位智能手机APP

2010-08-20 13:29:33

OFDM

2010-03-18 20:13:03

Java socket

2010-03-17 13:35:02

2009-06-11 09:56:09

MySQL Repli原理

2020-12-29 16:55:44

ZooKeeper运维数据结构

2011-06-17 15:57:46

CocoaXcode苹果

2012-09-28 10:12:55

点赞
收藏

51CTO技术栈公众号