又來盜取一篇http://tieba.baidu.com/p/2355599132

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

模板開發(fā)的,所以運(yùn)行應(yīng)用程序時,大部分基本的應(yīng)用程序環(huán)境已經(jīng)自動建立好了。例如,Xcode

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

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

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

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

查看 main.m 源文件

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

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

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

3. 選擇 main.m。

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

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

@autoreleasepool {

return

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

class]));

}

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

可自動管理應(yīng)用程序的對象生命周期,確保對象在需要時一直存在,直到不再需要。

調(diào)用 UIApplicationMain 會創(chuàng)建一個 UIApplication 類的實(shí)例和一個應(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è)計模式,在此模式中,一個對象代表另一個對象,或與另一個對象協(xié)調(diào)工作。)

在 iOS

應(yīng)用程序中,窗口對象為應(yīng)用程序的可見內(nèi)容提供容器,協(xié)助將事件傳遞到應(yīng)用程序?qū)ο?,協(xié)助應(yīng)用程序?qū)υO(shè)備的擺放方向做出響應(yīng)。窗口本身是不可見的。

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

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

查看屬性列表文件

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

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

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

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

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

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

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

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

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

HelloWorldViewController)?,F(xiàn)在,HelloWorldViewController

管理由單視圖提供的一個區(qū)域的內(nèi)容。視圖是一個對象,它在屏幕的矩形區(qū)域中繪制內(nèi)容,并處理由用戶觸摸屏幕所引起的事件。一個視圖也可以包含其他視圖,這些視圖稱為分視圖。當(dāng)一個視圖添加了一個分視圖后,它被稱為父視圖,這個分視圖被稱為子視圖。父視圖、其子視圖以及子視圖的子視圖(如有的話)形成一個視圖層次。一個視圖控制器只管理一個視圖層次。

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

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

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

MVC 的信息,但最好開始思考應(yīng)用程序中的對象如何扮演不同的角色。

在接下來的步驟,你要給由 HelloWorldViewController

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

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

查看串聯(lián)圖

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

Xcode 在編輯器區(qū)域打開串聯(lián)圖。(串聯(lián)圖對象后面的區(qū)域,即看起來像圖紙的區(qū)域,稱為畫布。)打開默認(rèn)串聯(lián)圖后,工作區(qū)窗口看起來應(yīng)該類似這樣:

串聯(lián)圖包括場景和過渡。場景代表視圖控制器,過渡則表示兩個場景之間的轉(zhuǎn)換。

因?yàn)椤癝ingle

View”模板提供一個視圖控制器,應(yīng)用程序中的串聯(lián)圖只包含一個場景,沒有過渡。畫布上指向場景左側(cè)的箭頭是“initial scene

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

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

對象來管理的?!癏ello World View Controller”場景由一些項(xiàng)目組成,顯示在

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

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

“first

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

·名為 Exit 的占位符對象,用于展開序列。

默認(rèn)情況下,當(dāng)用戶使子場景消失時,該場景的視圖控制器展開(或返回)父場景——即轉(zhuǎn)換為該子場景的原來場景。不過,Exit

對象使視圖控制器能夠展開任意一個場景。

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

串聯(lián)圖載入一個場景時,會創(chuàng)建一個視圖控制器類的實(shí)例來管理該場景。

·一個視圖,列在視圖控制器下方(要在大綱視圖中顯示此視圖,你可能要打開“Hello World

View

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

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

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

畫布上,場景下方的區(qū)域稱為場景臺。現(xiàn)在,場景臺顯示了視圖控制器的名稱,即“Hello World View

Controller”。其他時候,場景臺可包含圖標(biāo),分別代表第一響應(yīng)器、Exit 占位符對象和視圖控制器對象。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容