《iOS 應(yīng)用程序開發(fā)教程:一、創(chuàng)建新項目》一文中創(chuà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 框架提供,并且在你的項目的 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. 請確定項目導(dǎo)航器已在導(dǎo)航器區(qū)域中打開。
項目導(dǎo)航器顯示項目中的所有文件。如果項目導(dǎo)航器未打開,請點(diǎn)按導(dǎo)航器選擇欄左邊的按鈕:

2. 點(diǎn)按項目導(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)。
查看屬性列表文件
·在項目導(dǎo)航器的“Supporting Files”文件夾中,選擇 HelloWorld-Info.plist。
Xcode 在窗口的編輯器區(qū)域打開 Info.plist 文件,外觀應(yīng)該類似這樣:

在本教程中,你不需要查看“Supporting Files”文件夾中的文件,因此可以在項目導(dǎo)航器中關(guān)閉此
文件夾來避免分散注意力。同樣的,點(diǎn)按“Supporting Files”文件夾圖標(biāo)旁邊的展示三角形以關(guān)閉該文件夾。
因為你已選取在項目中使用串聯(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)用程序中的待辦事項或繪圖程序中的圖形),視圖對象知道如何顯示模型對象所表示的數(shù)據(jù),控制器對象充當(dāng)模型和視圖的媒介。在“HelloWorld”應(yīng)用程序中,模型對象為字符串,用來保存用戶輸入的名稱,F(xiàn)在你不需要了解更多有關(guān) MVC 的信息,但好開始思考應(yīng)用程序中的對象如何扮演不同的角色。
在接下來的步驟,你要給由 HelloWorldViewController 管理的視圖添加三個分視圖,以創(chuàng)建視圖層次;這三個子視圖分別表示文本欄、標(biāo)簽和按鈕。
你可以在串聯(lián)圖中看到視圖控制器及其視圖的模樣。
查看串聯(lián)圖
·在項目導(dǎo)航器中選擇 MainStoryboard.storyboard。
Xcode 在編輯器區(qū)域打開串聯(lián)圖。(串聯(lián)圖對象后面的區(qū)域,即看起來像圖紙的區(qū)域,稱為畫布。)
打開默認(rèn)串聯(lián)圖后,工作區(qū)窗口看起來應(yīng)該類似這樣:

串聯(lián)圖包括場景和過渡。場景代表視圖控制器,過渡則表示兩個場景之間的轉(zhuǎn)換。
因為“Single View”模板提供一個視圖控制器,應(yīng)用程序中的串聯(lián)圖只包含一個場景,沒有過渡。畫布上指向場景左側(cè)的箭頭是“initial scene indicator”(初始場景指示器),它標(biāo)識出應(yīng)用程序啟動時應(yīng)該首先載入的場景(通常初始的場景就是初始視圖控制器)。
在畫布上看到的場景稱為“Hello World View Controller”,因為它是由 HelloWorldViewController 對象來管理的!癏ello World View Controller”場景由一些項目組成,顯示在 Xcode大綱視圖(在畫布和項目導(dǎo)航器之間的面板),F(xiàn)在,視圖控制器由以下項目組成:
·一個第一響應(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ū)域稱為場景臺,F(xiàn)在,場景臺顯示了視圖控制器的名稱,即“Hello World View Controller”。其他時候,場景臺可包含圖標(biāo),分別代表第一響應(yīng)器、Exit 占位符對象和視圖控制器對象。
|