又来盗取一篇http://tieba.baidu.com/p/2355599132

《iOS应用程序开发教程:一、创建新项目》一文中创建的新项目是基于 Xcode

模板开发的,所以运行应用程序时,大部分基本的应用程序环境已经自动建立好了。例如,Xcode

创建一个应用程序对象(以及其他一些东西)来建立运行循环(运行循环将输入源寄存,并将输入事件传递给应用程序),该工作大部分是由 UIApplicationMain

函数完成的,该函数由 UIKit 框架提供,并且在你的项目的 main.m 源文件中自动调用。

注:UIKit 框架提供应用程序构建和管理其用户界面所需的全部类。UIKit 框架只是 Cocoa Touch

提供的面向对象的众多框架中的一个,而 Cocoa Touch 是所有 iOS 应用程序的应用环境。

查看 main.m 源文件

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

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

2. 点按项目导航器中“Supporting Files”文件夹旁边的展示三角形,打开文件夹。

3. 选择 main.m。

Xcode 在窗口的主编辑器区域打开源文件,外观应该类似这样:

main.m 中的 main 函数调用自动释放池 (autorelease pool) 中的 UIApplicationMain 函数:

@autoreleasepool {

return

UIApplicationMain(argc,argv,nil,NSStringFromClass([HelloWorldAppDelegate

class]));

}

@autoreleasepool 语句支持“自动引用计数 (ARC)”系统。ARC

可自动管理应用程序的对象生命周期,确保对象在需要时一直存在,直到不再需要。

调用 UIApplicationMain 会创建一个 UIApplication 类的实例和一个应用程序委托的实例(在本教程中,应用程序委托是

HelloWorldAppDelegate,由“Single

View”模板提供)。应用程序委托的主要作用是提供呈现应用程序内容的窗口,在应用程序呈现之前,应用程序委托也执行一些配置任务。(委托是一种设计模式,在此模式中,一个对象代表另一个对象,或与另一个对象协调工作。)

在 iOS

应用程序中,窗口对象为应用程序的可见内容提供容器,协助将事件传递到应用程序对象,协助应用程序对设备的摆放方向做出响应。窗口本身是不可见的。

调用 UIApplicationMain 也会扫描应用程序的 Info.plist 文件。Info.plist

文件为信息属性列表,即键和值配对的结构化列表,它包含应用程序的信息,例如名称和图标。

查看属性列表文件

·在项目导航器的“Supporting Files”文件夹中,选择 HelloWorld-Info.plist。

Xcode 在窗口的编辑器区域打开 Info.plist 文件,外观应该类似这样:

在本教程中,你不需要查看“Supporting Files”文件夹中的文件,因此可以在项目导航器中关闭此

文件夹来避免分散注意力。同样的,点按“Supporting Files”文件夹图标旁边的展示三角形以关闭该文件夹。

因为你已选取在项目中使用串联图,所以 Info.plist

文件还包含应用程序对象应该载入的串联图的名称。串联图包含对象、转换以及连接的归档,它们定义了应用程序的用户界面。

在“HelloWorld”应用程序中,串联图文件命名为 MainStoryboard.storyboard(请注意 Info.plist

文件只显示这名称的第一部分)。应用程序启动时,载入MainStoryboard.storyboard,接着根据它对初始视图控制器进行实例化。视图控制器是管理区域内容的对象;而初始视图控制器是应用程序启动时载入的第一个视图控制器。

“HelloWorld”应用程序仅包含一个视图控制器(具体来说就是

HelloWorldViewController)。现在,HelloWorldViewController

管理由单视图提供的一个区域的内容。视图是一个对象,它在屏幕的矩形区域中绘制内容,并处理由用户触摸屏幕所引起的事件。一个视图也可以包含其他视图,这些视图称为分视图。当一个视图添加了一个分视图后,它被称为父视图,这个分视图被称为子视图。父视图、其子视图以及子视图的子视图(如有的话)形成一个视图层次。一个视图控制器只管理一个视图层次。

注:“模型-视图-控制器”(Model-View-Controller, MVC)

设计模式定义了应用程序对象的三种角色,“HelloWorld”应用程序中的视图和视图控制器,体现了其中的两种,而第三种为模型对象。在 MVC

中,模型对象表示数据(例如日历应用程序中的待办事项或绘图程序中的图形),视图对象知道如何显示模型对象所表示的数据,控制器对象充当模型和视图的媒介。在“HelloWorld”应用程序中,模型对象为字符串,用来保存用户输入的名称。现在你不需要了解更多有关

MVC 的信息,但最好开始思考应用程序中的对象如何扮演不同的角色。

在接下来的步骤,你要给由 HelloWorldViewController

管理的视图添加三个分视图,以创建视图层次;这三个子视图分别表示文本栏、标签和按钮。

你可以在串联图中看到视图控制器及其视图的模样。

查看串联图

·在项目导航器中选择 MainStoryboard.storyboard。

Xcode 在编辑器区域打开串联图。(串联图对象后面的区域,即看起来像图纸的区域,称为画布。)打开默认串联图后,工作区窗口看起来应该类似这样:

串联图包括场景和过渡。场景代表视图控制器,过渡则表示两个场景之间的转换。

因为“Single

View”模板提供一个视图控制器,应用程序中的串联图只包含一个场景,没有过渡。画布上指向场景左侧的箭头是“initial scene

indicator”(初始场景指示器),它标识出应用程序启动时应该首先载入的场景(通常初始的场景就是初始视图控制器)。

在画布上看到的场景称为“Hello World View Controller”,因为它是由 HelloWorldViewController

对象来管理的。“Hello World View Controller”场景由一些项目组成,显示在

Xcode大纲视图(在画布和项目导航器之间的面板)。现在,视图控制器由以下项目组成:

·一个第一响应器占位符对象(以橙色立方体表示)。

“first

responder”是一个动态占位符,应用程序运行时,它应该是第一个接收各种事件的对象。这些事件包括以编辑为主的事件(例如轻按文本栏以调出键盘)、运动事件(例如摇晃设备)和操作消息(例如当用户轻触按钮时该按钮发出的消息)等等。本教程不会涉及第一响应器的任何操作。

·名为 Exit 的占位符对象,用于展开序列。

默认情况下,当用户使子场景消失时,该场景的视图控制器展开(或返回)父场景——即转换为该子场景的原来场景。不过,Exit

对象使视图控制器能够展开任意一个场景。

·HelloWorldViewController 对象(以黄色球体内的浅色矩形表示)。

串联图载入一个场景时,会创建一个视图控制器类的实例来管理该场景。

·一个视图,列在视图控制器下方(要在大纲视图中显示此视图,你可能要打开“Hello World

View

Controller”旁边的展示三角形)。

此视图的白色背景就是在 Simulator 中运行该应用程序时所看到的背景。

注:应用程序的窗口对象在串联图中并未表示出来。

画布上,场景下方的区域称为场景台。现在,场景台显示了视图控制器的名称,即“Hello World View

Controller”。其他时候,场景台可包含图标,分别代表第一响应器、Exit 占位符对象和视图控制器对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容