iPhone應用程序委托
iPhone應用程序委托是本文要介紹的內容,iPhone的軟件棧有好幾層組成,而應用程序是位于棧里面***的抽象層,系統(tǒng)核心服務(操作系統(tǒng)層)則是位于***層的。
這中間還有媒體層、Cocoa Touch層、核心服務層等等 ,但一般在開發(fā)應用程序的過程中,與我們主要打交道的是GUI框架和Cocoa Touch層所提供的面向對象抽象。Cocoa的Foundation框架包含了基礎數(shù)據(jù)類、基礎工具類等主要部分,幾乎所有的Cocoa類都是從一個根 類對象NSObject繼承來的。為了說明應用程序,從main開始。
- int main(int argc,char *argv[]}{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- int retVal = UIApplicationMain(argc,argv,nil,nil);
- [pool release];
- return retVal;
- }
這是 一個典型的C風格主函數(shù),其功能核心部分在于調用了UIApplicationMain函數(shù)來啟動事件循環(huán)并開始運行應用程序,注意主函數(shù)的第三個以及第 四個參數(shù),這兩個參數(shù)指明了應用程序的主類和應用程序委托。而這個委托就是一個處理應用程序生命周期管理事件的類。如果指定是nil,則被告知需要從一個 nib文件來裝入這些類對象。在Info.plist文件中,指定了一個nib文件,默認情況下是MainWindow.xib,接下來的事情就是 UIkit在xib文件中尋找應用的委托了。
在該 nib文件(用IB打開)中,可以看到有幾個圖標,其中有一個圖標是應用程序委托的圖標。其它的好像是視圖控制器圖標以及一個窗口圖標。 另外有File's Owner (擁有當前nib文件的對象)以及First Responser(指示該組件能夠***個接收用戶的輸入)兩個圖標。
那么應用程序是如何將該委托對象與應用程序相連的呢?
iPhone應用程序都有一個窗口對象,應用程序委托中有兩個連接,一個連接到該nib文件的窗口對象,一個連接到該nib文件的視圖控制器上。一般我們可以通過定制視圖控制器的行為來控制我們的顯示。
整個過程就是這樣的了。系統(tǒng)先調用main函數(shù),然后main函數(shù)調用UIAplicationMain函數(shù),這個函數(shù)利用Info.plist文件來尋 找應用程序的主nib文件,在該文件中找到應用程序的一個委托,這個委托又有兩個連接,可以接連到一個窗口和視圖控制器。然后這個視圖控制器又可以定制我 們的顯示行為(可以用代碼定制也可以用nib文件定制),這就是啟動應用程序的整個過程。
接下來,委托可以做什么呢?
應用程序的生命周期由生命周期方法控制,這些生命周期方法與應用委托相關的,當然,也是與由它裝入的視圖控制器相關的。比如,應用程序剛剛啟動完畢,調用委托的applicationDidFinishLaunching:方法。
為什么需要委托呢?
一個 簡單的想法是,一個對象能夠有一個單一的委托對象,可以在某些事件發(fā)生的時候來調用該委托對象的事件方法。委托對象就像一個職業(yè)能手一樣,它總是說:沒 事,當這個事件發(fā)生的時候,你告訴我就好了。而另一個接收事件的對象則有很多其它的業(yè)務事情需要處理:我實在沒時間處理這些事情,我也不知道我應該要做什 么,所以我交給你吧。
委托對象由UIApplicationDelegate所定義,因此對于一個類,如果想成為應用程序的委托,一定需要在頭文件中聲明它實現(xiàn)這個協(xié)議,然后在類的實現(xiàn)中,實現(xiàn)所有的必須方法。
小結:iPhone應用程序委托的內容介紹完了,希望本文對你有所幫助。更多相關iphone的內容請參考編輯推薦。
轉載網(wǎng)址:http://hi.baidu.com/zmxiangde_88/blog/item/0b21b6860148ccb26d811945.html