ios--AppDelegate and ViewController詳解(借鑑ios開發指南)
1.通過Xcode選擇工程模板,選擇ios中的Single View Application選項
2.在新建工程中,存在兩個組,專案組(Demo)和Products組
3.專案組:AppDelegate, Main.storyboard(故事版), ViewController(檢視控制器)

圖1-1
<1> AppDelegate詳解
AppDelegate 是 應用程式委託物件 ,其父類是 UIResponde r類(繼承關係),並實現 <UIApplicationDelegate> 委託協議.[ UIResponder:實現應用程式的處理響應事件的能力 ][ <UIApplicationDelegate>委託協議使AppDelegate成為應用程式的委託物件,這種物件能夠響應應用程式的生命週期 ](生命週期在程式執行的不同階段進行回撥)
//AppDelegate.h
#import <UIKit/UIKit.h>
@interface AppDelegate: UIResponder <UIApplicationDelegate>
@property (strong,nonatomic) UIWindow* window; //ios程式檢視中只有一個UIWindow
@end
//AppDelegate.m
#import "AppDelegate.h"
@interface AppDelegate()
@end
@implementation AppDelegate
- (BOOL)applicarion:(UIApplication *)application didFinishLauchingWithOptions:(NSDictionary *)launchOptions{return YES;} //應用啟動並進行初始化時會呼叫該方法併發出通知UIApplicationDidFinishLauchingNotification.這個階段會例項化根檢視控制器
- (void)applicationWillResignActive:(UIApplication *)application{} //應用從活動狀態進入非活動狀態時呼叫該方法併發出通知UIApplicationWillResignActiveNotification
- (void)applicationDidEnterBackground:(UIApplication *)application{} //應用進入後臺時候呼叫該方法併發出通知UIApplicationDidEnterBackgroundNotification
- (void)applicationWillEnterForeground:(UIApplication *)application{} //應用進入前臺時候但未處於活躍狀態時候呼叫該方法併發出通知UIApplicationWillEnterForegroundNotification
- (void)applicationDidBecomeActive:(UIApplication *)application{}
- (voidapplicationWillTerminate:(UIApplication *)application{} //應用被終止時候呼叫該方法併發出通知UIApplicationWillTerminateNotification,但記憶體清除時除外
@end

圖1-2 change
<2> 應用啟動場景
描述:當用戶第一次啟動程式時候,或者終止後再次啟動
(1)Not running --> Inactive
(2)Inactive --> Active

圖1-3 應用啟動場景狀態躍遷
<3>應用退出場景
描述:分為兩種可能:1.可以在後臺執行或者掛起;2.不可以在後臺執行和掛起
Step1:
(1)Active --> Inactive
(2)Inactive --> Background
(3)Background --> Suspended
Step2:
(1)Active --> Inactive
(2)Inactive --> Background
(3)Background --> Suspended
(4)Suspended --> Not running

圖1-4 STEP1

圖1-5 STEP2
<4>應用掛起重新執行場景
(1)Suspended --> Background
(2)Background --> Inactive
(3)Inactive --> Active
<5>應用終止狀態
記憶體清除後應用程式終止,可能是強制清除記憶體,還可以是使用者手動清除
Background --> Suspended --> Not running