又來(lái)盜取一篇http://tieba.baidu.com/p/2355599132

《iOS應(yīng)用程序開(kāi)發(fā)教程:一、創(chuàng)建新項(xiàng)目》一文中創(chuàng)建的新項(xiàng)目是基于 Xcode

模板開(kāi)發(fā)的田篇,所以運(yùn)行應(yīng)用程序時(shí)峦椰,大部分基本的應(yīng)用程序環(huán)境已經(jīng)自動(dòng)建立好了徒扶。例如趣席,Xcode

創(chuàng)建一個(gè)應(yīng)用程序?qū)ο螅ㄒ约捌渌恍〇|西)來(lái)建立運(yùn)行循環(huán)(運(yùn)行循環(huán)將輸入源寄存兵志,并將輸入事件傳遞給應(yīng)用程序),該工作大部分是由 UIApplicationMain

函數(shù)完成的宣肚,該函數(shù)由 UIKit 框架提供想罕,并且在你的項(xiàng)目的 main.m 源文件中自動(dòng)調(diào)用。

注:UIKit 框架提供應(yīng)用程序構(gòu)建和管理其用戶(hù)界面所需的全部類(lèi)霉涨。UIKit 框架只是 Cocoa Touch

提供的面向?qū)ο蟮谋姸嗫蚣苤械囊粋€(gè)按价,而 Cocoa Touch 是所有 iOS 應(yīng)用程序的應(yīng)用環(huán)境。

查看 main.m 源文件

1. 請(qǐng)確定項(xiàng)目導(dǎo)航器已在導(dǎo)航器區(qū)域中打開(kāi)笙瑟。

項(xiàng)目導(dǎo)航器顯示項(xiàng)目中的所有文件俘枫。如果項(xiàng)目導(dǎo)航器未打開(kāi),請(qǐng)點(diǎn)按導(dǎo)航器選擇欄最左邊的按鈕:

2. 點(diǎn)按項(xiàng)目導(dǎo)航器中“Supporting Files”文件夾旁邊的展示三角形逮走,打開(kāi)文件夾。

3. 選擇 main.m今阳。

Xcode 在窗口的主編輯器區(qū)域打開(kāi)源文件师溅,外觀應(yīng)該類(lèi)似這樣:

main.m 中的 main 函數(shù)調(diào)用自動(dòng)釋放池 (autorelease pool) 中的 UIApplicationMain 函數(shù):

@autoreleasepool {

return

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

class]));

}

@autoreleasepool 語(yǔ)句支持“自動(dòng)引用計(jì)數(shù) (ARC)”系統(tǒng)。ARC

可自動(dòng)管理應(yīng)用程序的對(duì)象生命周期盾舌,確保對(duì)象在需要時(shí)一直存在墓臭,直到不再需要。

調(diào)用 UIApplicationMain 會(huì)創(chuàng)建一個(gè) UIApplication 類(lèi)的實(shí)例和一個(gè)應(yīng)用程序委托的實(shí)例(在本教程中妖谴,應(yīng)用程序委托是

HelloWorldAppDelegate窿锉,由“Single

View”模板提供)。應(yīng)用程序委托的主要作用是提供呈現(xiàn)應(yīng)用程序內(nèi)容的窗口膝舅,在應(yīng)用程序呈現(xiàn)之前嗡载,應(yīng)用程序委托也執(zhí)行一些配置任務(wù)。(委托是一種設(shè)計(jì)模式仍稀,在此模式中洼滚,一個(gè)對(duì)象代表另一個(gè)對(duì)象,或與另一個(gè)對(duì)象協(xié)調(diào)工作技潘。)

在 iOS

應(yīng)用程序中遥巴,窗口對(duì)象為應(yīng)用程序的可見(jiàn)內(nèi)容提供容器千康,協(xié)助將事件傳遞到應(yīng)用程序?qū)ο螅瑓f(xié)助應(yīng)用程序?qū)υO(shè)備的擺放方向做出響應(yīng)铲掐。窗口本身是不可見(jiàn)的拾弃。

調(diào)用 UIApplicationMain 也會(huì)掃描應(yīng)用程序的 Info.plist 文件。Info.plist

文件為信息屬性列表摆霉,即鍵和值配對(duì)的結(jié)構(gòu)化列表豪椿,它包含應(yīng)用程序的信息,例如名稱(chēng)和圖標(biāo)斯入。

查看屬性列表文件

·在項(xiàng)目導(dǎo)航器的“Supporting Files”文件夾中砂碉,選擇 HelloWorld-Info.plist。

Xcode 在窗口的編輯器區(qū)域打開(kāi) Info.plist 文件刻两,外觀應(yīng)該類(lèi)似這樣:

在本教程中增蹭,你不需要查看“Supporting Files”文件夾中的文件,因此可以在項(xiàng)目導(dǎo)航器中關(guān)閉此

文件夾來(lái)避免分散注意力磅摹。同樣的滋迈,點(diǎn)按“Supporting Files”文件夾圖標(biāo)旁邊的展示三角形以關(guān)閉該文件夾。

因?yàn)槟阋堰x取在項(xiàng)目中使用串聯(lián)圖户誓,所以 Info.plist

文件還包含應(yīng)用程序?qū)ο髴?yīng)該載入的串聯(lián)圖的名稱(chēng)饼灿。串聯(lián)圖包含對(duì)象、轉(zhuǎn)換以及連接的歸檔帝美,它們定義了應(yīng)用程序的用戶(hù)界面碍彭。

在“HelloWorld”應(yīng)用程序中,串聯(lián)圖文件命名為 MainStoryboard.storyboard(請(qǐng)注意 Info.plist

文件只顯示這名稱(chēng)的第一部分)悼潭。應(yīng)用程序啟動(dòng)時(shí)庇忌,載入MainStoryboard.storyboard,接著根據(jù)它對(duì)初始視圖控制器進(jìn)行實(shí)例化舰褪。視圖控制器是管理區(qū)域內(nèi)容的對(duì)象皆疹;而初始視圖控制器是應(yīng)用程序啟動(dòng)時(shí)載入的第一個(gè)視圖控制器。

“HelloWorld”應(yīng)用程序僅包含一個(gè)視圖控制器(具體來(lái)說(shuō)就是

HelloWorldViewController)≌寂模現(xiàn)在略就,HelloWorldViewController

管理由單視圖提供的一個(gè)區(qū)域的內(nèi)容。視圖是一個(gè)對(duì)象晃酒,它在屏幕的矩形區(qū)域中繪制內(nèi)容表牢,并處理由用戶(hù)觸摸屏幕所引起的事件。一個(gè)視圖也可以包含其他視圖掖疮,這些視圖稱(chēng)為分視圖初茶。當(dāng)一個(gè)視圖添加了一個(gè)分視圖后,它被稱(chēng)為父視圖,這個(gè)分視圖被稱(chēng)為子視圖恼布。父視圖螺戳、其子視圖以及子視圖的子視圖(如有的話)形成一個(gè)視圖層次。一個(gè)視圖控制器只管理一個(gè)視圖層次折汞。

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

設(shè)計(jì)模式定義了應(yīng)用程序?qū)ο蟮娜N角色倔幼,“HelloWorld”應(yīng)用程序中的視圖和視圖控制器,體現(xiàn)了其中的兩種爽待,而第三種為模型對(duì)象损同。在 MVC

中,模型對(duì)象表示數(shù)據(jù)(例如日歷應(yīng)用程序中的待辦事項(xiàng)或繪圖程序中的圖形)鸟款,視圖對(duì)象知道如何顯示模型對(duì)象所表示的數(shù)據(jù)膏燃,控制器對(duì)象充當(dāng)模型和視圖的媒介。在“HelloWorld”應(yīng)用程序中何什,模型對(duì)象為字符串组哩,用來(lái)保存用戶(hù)輸入的名稱(chēng)。現(xiàn)在你不需要了解更多有關(guān)

MVC 的信息处渣,但最好開(kāi)始思考應(yīng)用程序中的對(duì)象如何扮演不同的角色伶贰。

在接下來(lái)的步驟,你要給由 HelloWorldViewController

管理的視圖添加三個(gè)分視圖罐栈,以創(chuàng)建視圖層次黍衙;這三個(gè)子視圖分別表示文本欄、標(biāo)簽和按鈕荠诬。

你可以在串聯(lián)圖中看到視圖控制器及其視圖的模樣琅翻。

查看串聯(lián)圖

·在項(xiàng)目導(dǎo)航器中選擇 MainStoryboard.storyboard。

Xcode 在編輯器區(qū)域打開(kāi)串聯(lián)圖柑贞。(串聯(lián)圖對(duì)象后面的區(qū)域望迎,即看起來(lái)像圖紙的區(qū)域,稱(chēng)為畫(huà)布凌外。)打開(kāi)默認(rèn)串聯(lián)圖后,工作區(qū)窗口看起來(lái)應(yīng)該類(lèi)似這樣:

串聯(lián)圖包括場(chǎng)景和過(guò)渡涛浙。場(chǎng)景代表視圖控制器康辑,過(guò)渡則表示兩個(gè)場(chǎng)景之間的轉(zhuǎn)換。

因?yàn)椤癝ingle

View”模板提供一個(gè)視圖控制器轿亮,應(yīng)用程序中的串聯(lián)圖只包含一個(gè)場(chǎng)景疮薇,沒(méi)有過(guò)渡。畫(huà)布上指向場(chǎng)景左側(cè)的箭頭是“initial scene

indicator”(初始場(chǎng)景指示器)我注,它標(biāo)識(shí)出應(yīng)用程序啟動(dòng)時(shí)應(yīng)該首先載入的場(chǎng)景(通常初始的場(chǎng)景就是初始視圖控制器)按咒。

在畫(huà)布上看到的場(chǎng)景稱(chēng)為“Hello World View Controller”,因?yàn)樗怯?HelloWorldViewController

對(duì)象來(lái)管理的但骨±撸“Hello World View Controller”場(chǎng)景由一些項(xiàng)目組成智袭,顯示在

Xcode大綱視圖(在畫(huà)布和項(xiàng)目導(dǎo)航器之間的面板)。現(xiàn)在掠抬,視圖控制器由以下項(xiàng)目組成:

·一個(gè)第一響應(yīng)器占位符對(duì)象(以橙色立方體表示)吼野。

“first

responder”是一個(gè)動(dòng)態(tài)占位符,應(yīng)用程序運(yùn)行時(shí)两波,它應(yīng)該是第一個(gè)接收各種事件的對(duì)象瞳步。這些事件包括以編輯為主的事件(例如輕按文本欄以調(diào)出鍵盤(pán))、運(yùn)動(dòng)事件(例如搖晃設(shè)備)和操作消息(例如當(dāng)用戶(hù)輕觸按鈕時(shí)該按鈕發(fā)出的消息)等等腰奋。本教程不會(huì)涉及第一響應(yīng)器的任何操作单起。

·名為 Exit 的占位符對(duì)象,用于展開(kāi)序列劣坊。

默認(rèn)情況下嘀倒,當(dāng)用戶(hù)使子場(chǎng)景消失時(shí),該場(chǎng)景的視圖控制器展開(kāi)(或返回)父場(chǎng)景——即轉(zhuǎn)換為該子場(chǎng)景的原來(lái)場(chǎng)景讼稚。不過(guò)括儒,Exit

對(duì)象使視圖控制器能夠展開(kāi)任意一個(gè)場(chǎng)景。

·HelloWorldViewController 對(duì)象(以黃色球體內(nèi)的淺色矩形表示)锐想。

串聯(lián)圖載入一個(gè)場(chǎng)景時(shí)帮寻,會(huì)創(chuàng)建一個(gè)視圖控制器類(lèi)的實(shí)例來(lái)管理該場(chǎng)景。

·一個(gè)視圖赠摇,列在視圖控制器下方(要在大綱視圖中顯示此視圖固逗,你可能要打開(kāi)“Hello World

View

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

此視圖的白色背景就是在 Simulator 中運(yùn)行該應(yīng)用程序時(shí)所看到的背景藕帜。

注:應(yīng)用程序的窗口對(duì)象在串聯(lián)圖中并未表示出來(lái)烫罩。

畫(huà)布上,場(chǎng)景下方的區(qū)域稱(chēng)為場(chǎng)景臺(tái)∏⒐剩現(xiàn)在贝攒,場(chǎng)景臺(tái)顯示了視圖控制器的名稱(chēng),即“Hello World View

Controller”时甚。其他時(shí)候隘弊,場(chǎng)景臺(tái)可包含圖標(biāo),分別代表第一響應(yīng)器荒适、Exit 占位符對(duì)象和視圖控制器對(duì)象梨熙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市刀诬,隨后出現(xiàn)的幾起案子咽扇,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件质欲,死亡現(xiàn)場(chǎng)離奇詭異树埠,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)把敞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)弥奸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人奋早,你說(shuō)我怎么就攤上這事盛霎。” “怎么了耽装?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵愤炸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我掉奄,道長(zhǎng)规个,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任姓建,我火速辦了婚禮诞仓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘速兔。我一直安慰自己墅拭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布涣狗。 她就那樣靜靜地躺著谍婉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镀钓。 梳的紋絲不亂的頭發(fā)上穗熬,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音丁溅,去河邊找鬼唤蔗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛窟赏,可吹牛的內(nèi)容都是我干的措译。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼饰序,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了规哪?” 一聲冷哼從身側(cè)響起求豫,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后蝠嘉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體最疆,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年蚤告,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了努酸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杜恰,死狀恐怖获诈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情心褐,我是刑警寧澤舔涎,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站逗爹,受9級(jí)特大地震影響亡嫌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掘而,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一挟冠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧袍睡,春花似錦知染、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至伪窖,卻和暖如春逸寓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背覆山。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工竹伸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人簇宽。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓勋篓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親魏割。 傳聞我的和親對(duì)象是個(gè)殘疾皇子譬嚣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容