熟悉 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 源文件

  1. 请确定项目导航器已在导航器区域中打开。

    项目导航器 会显示项目中的所有文件。如果项目导航器未打开,请点按导航器选择栏最左边的按钮。


    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"来撤销所作的更改。)