1.3 配置开发环境
Objective-C入门经典
Objective-C的开发环境的核心是Xcode,它是运行于Mac上的一个集成开发环境(IDE)。读者即使在没有注册开发者计划的情况下也能够免费从 Mac App Store 上下载这个工具(如果需要下载未发布的beta版本的Xcode,则需要成为一个注册开发者,但大多数的文档仍然可以在developer.apple.com上公开区域中找到)。Xcode的自动安装过程会将其所有文件安装到硬盘根目录下的Developer文件夹中。这意味着在默认情况下该计算机的所有用户都能够使用这个工具。在创建新项目时可以将项目放置在磁盘上的任意位置或放置在其他人能够访问的服务器上。
第4章将介绍另一种处理共享项目的方式。
附录D将更详细地介绍Xcode。
开发苹果应用程序的开发环境包括Xcode、Objective-C语言以及诸如Cocoa(针对Mac OS)和Cocoa Touch(针对iOS)之类的框架。本书主要关注Objective-C语言,因此尽管本书中的示例会用到框架中的各项功能,但除了介绍这些框架在 Objective-C 语言中的用法之外,不会详细介绍其他方面的内容。
1.3.1 Xcode简介
使用Xcode可以构建项目,一个项目通常包含一组文件,这组文件可以在同一台计算机上的不同位置或者在不同计算机之间进行移动。读者在查看developer.apple.com上的示例代码项目时就能看出这一点,因为可以从上面将各个示例下载下来并将其放置在计算机上的任意位置,然后可以构建示例并运行它。当然也可以改变一个项目的设置,使之只访问环境中的特定文件,但这样就会牺牲掉项目的可移动性。
Xcode还在界面中集成了Git和Subversion工具的命令子集来管理源代码。虽然无法使用Xcode中的Git或Subversion命令完成所有任务,但使用这些命令的确可以完成重要的源码版本控制任务。实际上,很多人甚至都不知道Xcode界面中没有实现哪些Git命令,因为除了使用过一些基本命令,他们对其他更高级的命令一无所知。
注意:关于Git
正如Git的网站http://git-scm.com/上所说的那样,Git是一个快速的版本控制系统。它是免费并且开源的,支持分布式开发、开发的合并与分支以及其他现代源码版本控制工具。
Xcode 为 iOS 和 Mac OS 提供了大量的项目模板。这些模板内置于 Xcode,是与从developer.apple.com上下载下来的示例分离开来的。尽管从developer.apple.com上下载下来的示例是实现完备的项目,读者在创建自己的项目时可以以这些示例为模型,但内置模板仍然是创建项目的起点。很多内置模板本身就能正常工作,尽管它们仅仅是构建应用程序的起点。例如Mac OS X的Cocoa Application模板将会创建一个空窗口和一个具有基本命令的菜单栏。
1.项目信息
每个项目都有与自身相关的一些基本信息,具体包括:
Deployment target—这是运行项目的SDK的版本。
Configurations—大多数项目在开始时就拥有一个调试(debug)和一个发布(release)配置。读者可以添加或删除其他配置。
Localizations—使用本地化可以将项目翻译成各种语言。本地化是内置于Cocoa和Cocoa Touch框架的。
2.目标
每个项目都是从单一目标起始的,读者可以添加新的目标。一个目标通常是一个应用程序。每个目标都拥有自己的标识符、版本号、图标和包等信息。一些Mac OS模板在为用户提供一个目标的同时,还会为Spotlight提供另外一个目标供其使用。在很多情况下,如果仅有一个目标,就没有必要区分项目及其目标了。
对于iOS项目可以指定具体设备(或者指定通用设备以同时给iPad和iPhone使用)。在Mac OS和iOS上都需要为目标指定主nib文件或界面文件(storyboard)。
1.3.2 运行第一个项目
更深入地了解有关Xcode使用方面的信息的最佳方式是使用其中一个内置模板创建一个项目,然后构建并运行该项目,接着读者就可以在这个基本应用程序的基础上添加自己的功能了。当然本书关注的是其中的Objective-C代码,读者可以对这些代码进行研究和学习。
Xcode 使用了一个复杂的工作空间窗口,将大量相关信息封装进一个简洁灵活的界面中。在Lion版本中,可以在View菜单中选择全屏菜单项,或选择普通窗口右上角的全屏按钮,来全屏显示工作空间窗口。本章下面的大部分图片都是采用全屏显示的。
Try It Yourself
使用Xcode工作空间
下面对Xcode工作空间进行了高度概括。与本书中的其他大多数任务不同,读者可以以任意顺序完成这个任务中的各个步骤。此外还需注意的是,下面各个步骤中大多数的行为都可以通过首选项进行更改,因此读者在完成下面各个步骤时看到的结果可能稍微有些不同。
1.从其中一个内置模板中创建一个新项目。读者在启动Xcode的时候可能会看到一个欢迎画面,在欢迎画面上有完成这个任务的选项按钮。在Xcode启动完成之后可以选择在下次启动时不显示欢迎画面,这也是Xcode在启动时可能不显示欢迎画面的原因。不管Xcode在启动时是否显示了欢迎画面,读者都可以选择File→New→New Project菜单来打开图1.1中的窗口。在本例中将使用iOS Master-Detail Application模板,同时将Device Family设置为Universal(iPhone和iPad)。向导将会提示输入项目的名称并选择存放项目的文件夹。
2.工作空间窗口将会被打开。
3.定位到编辑器和视图按钮。工作空间窗口是由右上角的两组按钮组控制的,每组按钮组都包含 3 个按钮。编辑器按钮组对应于图 1.2 View 菜单中的前 3 个菜单项(Standard Editor、Assistant Editor和Version Editor),视图按钮对应于View菜单中下面3个菜单项(Navigators、Console/Debug Area和Utilities)。这些按钮会显示和隐藏工作空间中的各个区域。在View菜单中还为各个按钮提供了额外的功能选项。
4.查看项目和浏览文件。在Lion版本中,使用View→Enter Full Screen进入全屏视图,如图1.3所示(也可以使用图1.2中右上角的全屏按钮)。显示导航栏并使用最左上角的按钮显示项目文件(注意当全屏显示一个菜单时,窗口的工具栏将会向下滑动以展示菜单栏)。显示实用区域(utility area)并显示编辑器中的Assistant。选择一个nib或界面文件,如图1.4所示。
注意中心面板的Assistant同时显示了两个文件。通过各个面板顶部的跳转栏可以选择文件(其中一个是在项目导航栏中所选择的文件)。在默认情况下,读者可能会发现Assistant菜单会显示一组相关的文件,如为一个.m文件显示一个相应的.h文件。本例中在界面设计器中所选择的视图控制器的头文件自动被显示出来了。
右边的实用区域包括上方的属性检查器面板(inspector pane)和下方的库面板。这两个面板之间的分隔线是可以上下拖动的。通过属性检查器面板上方的小按钮可以选择显示哪种属性,这与通过导航区域中的按钮来选择需导航的内容是一个原理。
5.在Organizer窗口中找出文档。点击编辑器和视图按钮右边的Organizer按钮会打开一个窗口,如图1.5所示。通过这个窗口除了可以浏览文档之外,还可以管理真机测试设备。(服务提供(provisioning)是注册开发者在iOS设备上安装软件的过程。服务提供还可以用来控制在Mac OS和iOS上对iCloud的访问。不管其用途是上述两种的哪一种,它仅适用于开发者。)此外,这个窗口还提供了一些按钮来管理仓库(如Git)、归档资料(包括发行版)和项目。
6.隐藏实用区域,如图1.6所示。
7.隐藏实用区域和导航栏,如图1.7所示。注意无法隐藏窗口中心的编辑器面板。
8.选择编辑器中的一个对象。本例选中了Hour1_MasterViewController对象。在代码编辑窗口中可以选择一个类的引用。不管选中的对象是一个类还是一个类的引用,实用区域中的Attribute检查器(检查器顶部左边第3个按钮)将会显示与所选中的对象相关的一些信息,在必要的时候可以修改这些信息(如图1.8所示)。
注意,在 Attribute 检查器左侧的是 Quick Help。它会显示一些汇总的已选定对象,并在Orignizer窗口提供一个指向更多文档的链接。
9.通过视图按钮组中间的那个按钮可以显示Debug区域。当发生错误或设置了断点之后该区域会自动显示出来。Debug区域包括两个部分(参见图1.9)。左边是变量视图,右边是输出信息的控制台。通过Debug区域右上角的按钮可以控制显示其中一个部分或同时显示两个部分,如图1.9所示。
10.通过Debug区域顶部的跳转栏可以查看线程。比较一下跳转栏中弹出的窗口和图1.10中左边Debug导航栏之间有何异同之后,就会发现跳转栏显示的信息更加详细。