你的第一个iOS应用(二) 入门指南

来源:互联网 发布:星际淘宝网第488章 编辑:程序博客网 时间:2024/05/18 03:44

入门指南

要想参照这个教程去创建iOS应用, 你需要Xcode 4.3或更高版本. 是苹果的集成开发环境(或者叫IDE),它可以用于iOS所有版本及Mac OS X的开发. 当你在你的Mac电脑上安装Xcode的时候,你还能获得iOS SDK, SDK里包含了这个iOS平台的编程接口.

这里可以不看,因为我已经把所有需要展开的部分都直接复制过来了,直接就可以看需要展开的阅读部分.

Usage note: 在这个教程中会有一些需要你点开某个区域才能阅读的部分,这个部分是由两条蓝色的线及一个蓝色的点和一个描述这个部分的短语组成的.(在这里不用点击展开了,因为已经把所有内容都展示出来了).比如要想阅读 “To create a new project…” 部分,就在两条蓝线之内点击,就会显示出被展开的部分.

当你完成这个这部分阅读的时候,你可以继续展开此部分进行下面的阅读 也可以再次点击蓝色线之内的部分关闭它 (如果在展开的区域外点击不会关闭,因此你可以在这段区域中复制代码)

创建并测试一个新的工程

要开始开发你的应用,你需要创建一个新的Xcode工程.

bullet
去创建一个新的工程. . .
  1. 打开Xcode (默认位置在 /Applications 里).

    如果你在此之前都没有创建或打开过一个工程的话, 你应该会看到一个Xcode的欢迎窗口, 就像这样:

    image: ../Art/project_chooser.jpg

    如果你在此之前创建或打开过工程的话, 你可能看不到Xcode欢迎画面 而是一个工程窗口.

  2. 在Xcode的欢迎窗口中, 点击 “Create a new Xcode project” (或者选择 File > New > New project).

    Xcode会打开一个新的窗口并弹出一个对话框来让你选择一个模板. Xcode包含了几个内置的模板可以让你开发一些常见风格的iOS应用. 例如, 这个Tabbed模板可以创建一个类似于iTunes风格的应用, Master-Detail模板可以创建类似于Mail风格的应用.

    image: ../Art/template_chooser.png
  3. 在对话框的左边的部分,选择Application.

  4. 在Dialog的主要区域(对话框的右边部分), 选择 Single View Application 并且点击 Next.

    会弹出一个新的对话框来为你的应用起个名字 并且 选择这个工程的附加选项.

    image: ../Art/option_chooser_before.png
  5. 填写 产品名,公司标识,以及类前缀字段(自动生成的类都以它开头).

    你可以使用下面这些值:

    • 产品名: HelloWorld

    • 公司标识: 如果你有公司标识就填公司标识.没有的话,可以填edu.self

    • 类前缀: HelloWorld

    注意: Xcode使用你输入的 产品名字 来作为你工程和应用的名字. Xcode使用类前缀来为你创建类. 例如, Xcode自动创建一个代理类(delegate)并将它命名为HelloWorldAppDelegate. 如果你输入了不同的类前缀, 那么这个应用的代理类会被命名为  [你的类前缀名]AppDelegate. (你将会在 “了解一个应用时如何运行的.”学习到更多关于应用代理的知识.)

    为了保持简单, 这个教程假设你使用了HelloWorld的产品名称和HelloWorld来作为类前缀.

  6. 在Device的家族下拉弹出菜单中, 确保选择了 iPhone.

  7. 确保勾选了Use Storyboard和Use Automatic Reference Counting选项,并且没有勾选Include Unit Tests 选项.

  8. 点击 Next.

    会弹出一个对话框来让你指定工程保存的位置.

  9. 指定一个你工程的位置 (不用改变Source Control option未选中的状态) 然后点击 Create.

    Xcode会在一个窗口中打开你的新工程 (这个窗口被成为 工作区窗口(workspace window) ), 应该会看到类似于下图这样:

    image: ../Art/project_window.jpg

 花几分钟时间来熟悉下Xcode给你打开的工作区. 你将会在接下来的教程中一直会使用下面图示所标明的一些按钮和区域.

image: ../Art/workspace_window_callouts.png

如果在你的工作区窗口实用工具区域(utilities area)已经打开了 (像上图所展示的那样), 你可以现在先关闭它,因为你直到这个这篇教程结束都不会用到它. View Button最右边的按钮是控制使用工具区域的. 当使用工具区域显示的时候,会看到下面这样的状态:

image: ../Art/utilites_button.jpg

如果有必要,点击View Button最右边的按钮关闭使用工具区域.

Xcode你甚至不用编写任何代码,就可以编译你的应用并在模拟器中运行. 正如其名, 模拟器可以让你知道你的应用如果在基于iOS设备上运行的时候大概是什么外观和行为.

bullet
去在模拟器中运行你的应用 . . .
  1. 确保Xcode工具栏中的 Scheme 弹出菜单已经选择了 HelloWorld > iPhone 5.0 Simulator .

    如果弹出菜单没有显示这个选择, 那么就打开菜单然后选择iPhone 5.0 Simulator.

  2. 在Xcode的工具栏中点击Run按钮 (或者选择Product > Run).

    Xcode则会显示编译过程.

Xcode编译完你的工程后, 模拟器应该会自动启动. 因为你指定的是一个iPhone产品 (而不是一个iPad产品), 模拟器会显示一个类似一个iPhone的窗口. 在模拟的iPhone的屏幕上, 模拟器打开你应用, 这时候会看到类似下图这样:

image: ../Art/first_run.jpg

现在, 你的应用并不有趣: 它只是简单地显示了一个空白屏幕. 要理解这块白色屏幕是从哪里来的, 你需要学习在你代码中的对象以及它们如何协同工作并启动应用. 现在, 退出模拟器 (选择 iOS Simulator > Quit iOS Simulator; 确保你不要退出Xcode).


了解一个应用是如何运行的

因为你是基于Xcode模板创建的工程, 大部分的基本应用环境在运行应用的时候会自动设置好. 例如, Xcode创建一些应用程序的对象, 还要做一些其他的事情, 建立运行循环 (一个运行循环注册了输入源,可以传递输入事件到你的应用). 这些大多数工作都已经通过UIApplicationMain 函数完成了, 这里给你提供了通过UIKit框架并且自动调用你工程中的 main.m 源文件.

注意: UIKit框架提供了应用程序需要构建的所有类以及管理它们的用户界面. 这个UIKit框架仅仅是Cocoa Touch所提供的许多面向对象框架中的一个而已, 可以是所有iOS应用的环境.

bullet
去查看main.m源文件 . . .
  1. 确保在导航区域(navigator area)中 工程导航器 被打开 .

    工程导航器(project navigator)显示你工程的所有文件 . 如果工程导航器没有打开, 点击导航选择器栏(navigator selector bar)的最左边的按钮:

    image: ../Art/navigator_selector.png
  2. 通过点击三角图标来打开Supporting Files目录.

  3. 选择 main.m.

    Xcode在窗口的主编辑器区(editor area)打开源文件, 可以看到类似下图这样:

    image: ../Art/main_m_file.jpg

main.m文件中的main函数在autorelease pool中调用UIApplicationMain函数:

@autoreleasepool {
   return UIApplicationMain(argc, argv, nil, NSStringFromClass([HelloWorldAppDelegate class]));
}

这个 @autoreleasepool 的声明 支持自动引用计数(ARC) 系统. ARC为你的应用提供了自动对象生命周期的管理, 确保对象在需要使用的时候存在,不需要时候的时候不存在.

调用UIApplicationMain创建一个UIApplication和一个应用代理类的实例(在这个教程中,这个应用的代理是HelloWorldAppDelegate,这个是通过 Single View 模板提供给你的). 这个应用代理的主要任务就是给你的应用程序提供一个窗口可以绘制应用的内容. 这个应用代理也可以在应用显示前进行应用配置工作. (代理是一个设计模式 可以代表一个对象的动作,也可以与其他对象进行协调.)

在一个iOS应用里,一个window对象提供了应用的可视内容的容器,帮助传递事件到应用程序的对象,并且帮助应用程序响应设备方向的改变. 这个window本身是不可视的.

调用 UIApplicationMain也会扫描应用的Info.plist文件. Info.plist 是一个属性列表 (在这里面是以键值对组成的结构列表) ,它包含一些关于应用的信息,例如它的名字和图标.

bullet
要查看属性列表文件 . . .
  • 在工程导航器的Supporting Files中, 选择 HelloWorld-Info.plist.

    Xcode在窗口的编辑区域打开Info.plist文件, 将会看到类似下图这样:

    image: ../Art/info_plist.jpg

    在这个教程中,你不需要去查看Supporting Files的其他文件,因此在工程导航器中关闭此文件夹来最小化显示. 再一次点击这个显示的下箭头来关闭Supporting File目录.

因为你在工程中选择使用了一个故事板(storyboard), Info.plist 文件也会包含一个故事板文件的名字来让应用对象加载它. 一个故事板包含了对象的存档, 转场, 以及定义一个应用的用户界面的集合.

在这个HelloWorld应用里, 故事板文件被命名为 MainStoryboard.storyboard (注意Info.plist 只会显示这个名字的第一部分). 当应用启动的时候, MainStoryboard.storyboard被加载并且从它实例化最初的view controller. 一个 view controller 是一个管理内容一块区域的对象; 当应用启动的时候这个最初的view controller作为首个view controller被加载.

这个HelloWorld应用只包含了一个view controller (指定为, HelloWorldViewController). 现在,HelloWorldViewController 管理 一个由 Single View 所提供的内容的一块区域. 一个视图(view)是一个在屏幕的矩形区域绘制内容并且可以处理用户的触控的对象. 一个视图也可以包含其他的视图, 这些被称为子视图. 当你添加一个子视图到一个视图中时, 这个包含着视图的被称为 父视图(parent view)并且它的子视图被成为子视图(child view).从一个视图层次中衍生出来的, 父视图,它的子视图(以及它们的子视图, 如果有的话). 一个view controller管理者一个单一视图的层次.

注意: (MVC)在HelloWorld应用中这个视图和视图控制器(view controller)表现了Model-View-Controller设计模式应用对象设计的三个规则中的两个. 第三个规则是模型(model)对象. In MVC, MVC中, 模型对象代表着数据 (例如在日历应用中的代办事项或者在绘图应用中的模型形状), 视图对象通过模型对象的表示知道如何显示数据, 并且controller对象在模型及视图对象中进行协调. 在HelloWorld应用中, 模型对象就是保存着用户输入名字的字符串. 你不需要现在就知道更多关于MVC的事, 但是这对于在你的应用中来玩转这三种不同规则是个不错的开端.

在以后的步骤中,  你将通过添加三个子视图到 HelloWorldViewController 所管理的视图中来生成一个视图层次; 这三个子视图分别代表着文本框,标签,和按钮.

你就可以在故事板中看到视图控制器和它的视图的可视化表现形式.

bullet
去查看故事板 . . .
  • 在工程导航器中选择MainStoryboard.storyboard.

    Xcode在编辑区域打开故事板. (这个故事板对象的后面—that is, the area that looks like graph paper可以看到类似于方格纸的区域—它被称作画布(canvas ).)

当你打开默认的故事板,你的工作区窗口应该看到如下图这样:

image: ../Art/storyboard_on_canvas.png

一个故事板包含了场景(scenes)和演变(segues). 一个场景表示着一个视图控制器, 一个演变 表示着可以在两个场景之间进行转场.

因为Single View模版只提供了一个视图控制器, 在你的应用中包含着一个场景 并且 没有演变. 在画布的左边的那个箭头是 初始场景指示器(initial scene indicator) , 代表着当应用程序启动时这个场景应该首先被加载 (这个初始场景同样会作为 初始视图控制器(initial view controller)).

 你可以看到这个场景在画布中被命名为Hello World View Controller 因为它是通过HelloWorldViewController对象管理的. 这个Hello World View Controller 场景在Xcode大纲视图中(outline view)是由几个项目组成显示的 (在画布和工程导航器之间显示的面板). 现在,这个视图控制器由以下项目组成:

  • A first responder 占位符对象(通过一个橙色的立方体表示的).

    这个 第一响应者(first responder)是一个动态的占位符,用来表示当应用程序正在运行时,第一个获取到一系列事件的对象. 这些事件包括了编辑焦点事件 (例如点下文本框弹出键盘),运动事件 (例如设备摇动), 和动作消息 (例如当用户点击它时,发送一个按钮消息), 等等. 、在这个教程中你不需要对第一响应者做任何事.

  • HelloWorldViewController 对象 (通过一个黄色的球体内部一个灰白的矩形所表示的)

    当故事板加载一个场景的时候, 它会创建一个视图控制器类的实例来管理这个场景.

  • 在视图控制器下面列出了一个视图 (要在大纲视图中显示此视图, 你也许要打开这个Hello World VIew Controller的箭头).

    这个视图的白色背景就是当你刚才在模拟器运行应用时所看到的那个白色屏幕.

注意: 一个应用的window对象是不在故事板中表示出来的.

在画布中场景的下方区域被称作 场景停靠(scene dock). 现在, 这个场景停靠栏显示了视图控制器的名字(也就是 Hello World View Controller). 在其他的时候, 这个场景停靠栏会包含第一响应者和视图控制器对象的图标.

概括

在这一章种你使用Xcode创建了一个基于Single View模版的新工程 并且编译并运行了这个定义了模版的默认应用. 然后你看到了这个工程了一些基本信息, 例如 main.m 源文件,Info.plist 文件, 以及故事板文件, 并且学习了一个应用是如何启动的. 你还学习了如何在你的应用中给你对象定义Movel-View-Controller设计模式的规则.

在下一章种, 你将会学到关于视图控制器及它的视图的更多知识.

原创粉丝点击