入门指南
要想参照这个教程去创建iOS应用, 你需要Xcode 4.3或更高版本. 是苹果的集成开发环境(或者叫IDE),它可以用于iOS所有版本及Mac OS X的开发. 当你在你的Mac电脑上安装Xcode的时候,你还能获得iOS SDK, SDK里包含了这个iOS平台的编程接口.
这里可以不看,因为我已经把所有需要展开的部分都直接复制过来了,直接就可以看需要展开的阅读部分.
Usage note: 在这个教程中会有一些需要你点开某个区域才能阅读的部分,这个部分是由两条蓝色的线及一个蓝色的点和一个描述这个部分的短语组成的.(在这里不用点击展开了,因为已经把所有内容都展示出来了).比如要想阅读 “To create a new project…” 部分,就在两条蓝线之内点击,就会显示出被展开的部分.
当你完成这个这部分阅读的时候,你可以继续展开此部分进行下面的阅读 也可以再次点击蓝色线之内的部分关闭它 (如果在展开的区域外点击不会关闭,因此你可以在这段区域中复制代码)
创建并测试一个新的工程
要开始开发你的应用,你需要创建一个新的Xcode工程.
花几分钟时间来熟悉下Xcode给你打开的工作区. 你将会在接下来的教程中一直会使用下面图示所标明的一些按钮和区域.

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

如果有必要,点击View Button最右边的按钮关闭使用工具区域.
Xcode你甚至不用编写任何代码,就可以编译你的应用并在模拟器中运行. 正如其名, 模拟器可以让你知道你的应用如果在基于iOS设备上运行的时候大概是什么外观和行为.
Xcode编译完你的工程后, 模拟器应该会自动启动. 因为你指定的是一个iPhone产品 (而不是一个iPad产品), 模拟器会显示一个类似一个iPhone的窗口. 在模拟的iPhone的屏幕上, 模拟器打开你应用, 这时候会看到类似下图这样:

现在, 你的应用并不有趣: 它只是简单地显示了一个空白屏幕. 要理解这块白色屏幕是从哪里来的, 你需要学习在你代码中的对象以及它们如何协同工作并启动应用. 现在, 退出模拟器 (选择 iOS Simulator > Quit iOS Simulator; 确保你不要退出Xcode).
了解一个应用是如何运行的
因为你是基于Xcode模板创建的工程, 大部分的基本应用环境在运行应用的时候会自动设置好. 例如, Xcode创建一些应用程序的对象, 还要做一些其他的事情, 建立运行循环 (一个运行循环注册了输入源,可以传递输入事件到你的应用). 这些大多数工作都已经通过UIApplicationMain
函数完成了, 这里给你提供了通过UIKit框架并且自动调用你工程中的 main.m 源文件.
在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
是一个属性列表 (在这里面是以键值对组成的结构列表) ,它包含一些关于应用的信息,例如它的名字和图标.
因为你在工程中选择使用了一个故事板(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
所管理的视图中来生成一个视图层次; 这三个子视图分别代表着文本框,标签,和按钮.
你就可以在故事板中看到视图控制器和它的视图的可视化表现形式.
当你打开默认的故事板,你的工作区窗口应该看到如下图这样:

一个故事板包含了场景(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的箭头).
这个视图的白色背景就是当你刚才在模拟器运行应用时所看到的那个白色屏幕.
在画布中场景的下方区域被称作 场景停靠(scene dock)栏. 现在, 这个场景停靠栏显示了视图控制器的名字(也就是 Hello World View Controller). 在其他的时候, 这个场景停靠栏会包含第一响应者和视图控制器对象的图标.
概括
在这一章种你使用Xcode创建了一个基于Single View模版的新工程 并且编译并运行了这个定义了模版的默认应用. 然后你看到了这个工程了一些基本信息, 例如 main.m 源文件,Info.plist
文件, 以及故事板文件, 并且学习了一个应用是如何启动的. 你还学习了如何在你的应用中给你对象定义Movel-View-Controller设计模式的规则.
在下一章种, 你将会学到关于视图控制器及它的视图的更多知识.