iOS應用程序的窗口元素及其運行原理

1、應用程序窗口元素

 

UIWindow:每個應用程序都有屬於本身的UIWindow,UIWindow繼承自UIView
UIView:視圖,屏幕上可視的控件都是UIView,如按鈕、文本標籤、表格
UIViewController:控制器, 內部默認有一個UIView,負責控制UIView之間的切換、管理UIView的生命週期、裝配數據到UIView上顯示、處理UIView事件(至關於Android的Activity)

2、iOS應用程序項目目錄結構


3、iOS應用程序的運行原理


1.首先執行main函數(程序的入口)
2.執行UIApplicationMain函數
3.UIApplicationMain函數,加載程序
1> 建立一個UIApplication實例。這個UIApplication對象是單例的,一個iOS程序對應一個UIApplication對象,UIApplication對象是應用程序的象徵。
2> 開啓一個消息循環(main loop),用來監聽用戶的操做
3> 在建立一個UIApplication的delegate對象,負責監聽UIApplication對象的生命週期 

delegate類須要實現UIApplicationDelegate協議 app

1 @interface AppDelegate : UIResponder <UIApplicationDelegate>
2 ...
3 @end


4> 當UIApplication的生命週期發生改變時,會給delegate發送不一樣的消息
* 當第一次運行程序的時候:
didFinishLaunchingWithOptions (加載完畢) ->
applicationDidBecomeActive (獲取焦點)
* 當點擊Home鍵的時候:
applicationWillResignActive (失去焦點) ->
applicationDidEnterBackground (進入後臺)
* 當再次點擊應用程序圖標從新進入應用程序的時候:
applicationWillEnterForeground (進入前臺) ->
applicationDidBecomeActive (獲取焦點)

UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
UIApplicationMain函數的參數:
* 第3個參數用來指定UIApplication的類名(或者子類),若是爲nil,默認就是UIApplication
* 第4個參數用來指定UIApplication的代理

4.在應用程序加載完成時,delegate對象的didFinishLaunchingWithOptions方法被調用,完成初始化窗口、初始化根控制器、設置和顯示key窗口等操做

// 初始化一個窗口
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

// 傳入xib文件名來初始化一個控制器
self.viewController = [[[ViewController alloc] initWithNibName:@"Main_iPhone" bundle:nil] autorelease];

//設置窗口的根控制器
self.window.rootViewController = self.viewController;
// 上面的代碼內部執行了下面代碼的操做
// [self.window addSubview:self.viewController.view];

// 窗口不會默認顯示,須要調用方法來顯示
[self.window makeKeyAndVisible];
// self.window.hidden =NO;

return YES;
相關文章
相關標籤/搜索