熟悉 Xcode界面/模拟器/代码
熟悉 Xcode界面/模拟器/代码
Xcode 包括了创建应用程序时所需的一切。它不仅整理了创建应用程序时所需的文件,还提供了代码和界面元素编辑器,可让你构建和运行应用程序,并拥有强大的集成调试程序。
请花几分钟时间来熟悉 Xcode 工作区窗口。在接下来的整个教程中,你将会用到下面窗口中标识出的控制。点按不同的按钮,体验一下它们的工作方式。如果要了解有关界面某个部分的更多信息,请阅读其帮助文章。方法是按住 Control 键点按 Xcode 中的区域,然后从出现的快捷菜单中选取文章。
运行 iOS Simulator
由于项目是基于 Xcode 模板创建的,因此基本的应用程序环境已经自动为你设置好了。即使没有编写任何代码,也可以构建和运行 Empty Application 模板,而无需进行任何额外的配置。
构建和运行你的应用程序,可以使用 Xcode 自带的 iOS Simulator 应用程序。顾名思义,iOS Simulator可模拟在 iOS 设备上运行应用程序,让你初步了解它的外观和行为。
它可模拟多种不同类型的硬件,包括屏幕大小不同的 iPad、iPhone 等等。因此,你可以模拟在任何一款开发目标设备上运行应用程序。
在 iOS Simulator 中运行应用程序
1. 从 Xcode 工具栏的"Scheme"弹出式菜单中选取"iPhone Retina (4-inch)"。
继续浏览菜单,查看 iOS Simulator 中的其他硬件选项。
2. 点按 Xcode 工具栏左上角的"Run"按钮。
或者,可以选取"Product">"Run"(或按下 Command-R)。
如果是首次运行应用程序,Xcode 会询问你是否要在 Mac 上启用开发者模式。开发者模式可让 Xcode访问特定的调试功能,无需每次都输入密码。请决定是否要启用开发者模式,然后按照提示操作。如果选取不启用,可能稍后会要求输入密码。本教程假定已启用了开发者模式。
3. 构建过程完成后,请看 Xcode 工具栏。
Xcode 会在工具栏中间的 活动显示窗口 中显示有关构建过程的消息。
Xcode 完成项目生成后,iOS Simulator 会自动启动。首次启动时可能需要几分钟时间。
iOS Simulator 会按照以 iPhone 模式打开。在模拟的 iPhone 屏幕上,iOS Simulator 会打开你的应用程序。
一如其名,Empty Application 模板并未包括过多的代码,仅会显示一个白色的屏幕。其他模板会有更多
复杂的行为,因此在扩展模板制作自己的应用程序之前,先要弄清楚模板的用处,这一点很重要。而要
做到这一点,一个很好的方式,就是先不做任何修改,直接运行模板。
探索完应用程序后,请选取"iOS Simulator">"Quit iOS Simulator"(或按下 Command-Q)来退出 iOSSimulator。
检查源代码
Empty Application 模板附带了少量现成的源代码,用于设置应用程序环境。大多数工作都由UIApplicationMain 函数来完成,它在项目的 main.m 源文件中会被自动调用。 UIApplicationMain函数会创建一个应用程序对象来设置应用程序基础结构,以配合 iOS 系统运作。包括创建一个 运行循环 ,将输入事件传递给应用程序。
你不需要直接处理 main.m 源文件,但是了解一下它的工作方式也是颇有趣味的。
查看 main.m 源文件
-
请确定项目导航器已在导航器区域中打开。
项目导航器 会显示项目中的所有文件。如果项目导航器未打开,请点按导航器选择栏最左边的按钮。
2. 点按项目导航器中"Supporting Files"文件夹旁边的显示三角形,打开文件夹。
3. 选择 main.m 。
Xcode 会在窗口的主编辑器区域打开源文件,外观类似于:
如果连按该文件,它会在单独的窗口中打开。你可以根据需要进行选择:点按文件一次,将其在主项目窗口中打开;或是连按文件,将其在单独的窗口中打开。
main中的main.m 函数会调用自动释放池 (autorelease pool) 中的 UIApplicationMain 函数。
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([XYZAppDelegate
class]));
}
@autoreleasepool 语句支持应用程序的内存管理。自动引用计数 (Automatic Reference Counting, ARC)
利用编译器追踪对象的所有者,使内存管理变得简单; @autoreleasepool 是内存管理基础结构的一部分。
调用 UIApplicationMain 会创建应用程序的两个重要初始组件:
●UIApplication 类的实例, 称为 应用程序对象 。
应用程序对象可管理应用程序事件循环,并协调其他高级的应用程序行为。定义在 UIKit 框架中的这个类,不要求编写任何额外的代码,就可以达成其任务。
●XYZAppDelegate 类的实例,称为应用程序委托。
Xcode 创建此类,作为设置 Empty Application 模板的一部分。应用程序委托会创建一个呈现应用程序内容的窗口,并为响应应用程序内的状态转换提供位置。这个窗口是你编写自定应用程序级代码的地方。与所有的类一样, XYZAppDelegate 类在应用程序的两个源代码文件中被定义:接口文件
XYZAppDelegate.h ;实现文件 XYZAppDelegate.m 。
以下是应用程序对象和应用程序委托互动的方式。应用程序启动时,应用程序对象会调用应用程序委托上已定义的方法,使自定代码有机会执行其操作,这正是运行应用程序的有趣之处。为了深入理解应用程序委托的角色,请从接口文件开始查看其源代码。如果要查看应用程序委托的接口文件,请在项目导航器中选择 XYZAppDelegate.h 。应用程序委托的界面包含了单一属性: window 。有了这个属性,应用程序委托才会跟踪能呈现所有应用程序内容的窗口。
下一步,请查看应用程序委托的实现文件。请在项目导航器中选择 XYZAppDelegate.m 。应用程序委托的实现包含了一些重要方法的"骨架"。这些预定义的方法可让应用程序对象与应用程序委托进行沟通。
在一个重要的运行时事件(例如,应用程序启动、低内存警告和应用程序终止)中,应用程序对象会调用应用程序委托中相应的方法,使其有机会进行适当的响应。你无需执行任何特殊的操作,来确定这些方法是否会在正确的时间被调用,因为应用程序对象会帮你处理这部分的工作。
这些自动实现的方法都具有一个默认的行为。就算将骨架实现留空,或将它从 XYZAppDelegate.m 文件中删除,这些行为在方法被调用时,都会默认执行。你可以使用这些骨架来放置附加的自定代码,以在方法被调用时执行。例如, XYZAppDelegate.m 文件中的第一个方法包含了几行代码,用于设置应用程序的窗口,并让应用程序首次运行时显示白色的背景颜色。在本教程中,你不会使用到任何自定应用程序委托代码,因此可以移除这段代码。
配置应用程序委托的实现文件
1. 请在 XYZAppDelegate.m 中查找 application:didFinishLaunchingWithOptions: 方法。
它是文件中的第一个方法。
2. 从该方法中删除前三行代码,然后它会显示为:
Xcode 会自动存储更改。它会时刻跟踪并存储你的所有操作。(你可以通过选取"Edit">"Undo Typing"来撤销所作的更改。)