1. 程式人生 > 實用技巧 >iOS APP的AppDelegate理解

iOS APP的AppDelegate理解

建立應用程式之後之後,預設有AppDelegate.h檔案與AppDelegate.m檔案。 AppDelegate為整個應用的一個代理,提供程式啟動、退出等類似監控的介面。

1、AppDelegate.m 介面所在的檔案,常見介面有:

/* 應用程式啟動後,要執行的委託呼叫,系統啟動代理(第一個頁面的載入)*/  
(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 
/* 應用程式將要由活動狀態切換到非活動狀態時執行的委託呼叫,如按下home 按鈕,返回主螢幕,或全屏之間切換應用程式等。* / 
(void) applicationWillResignActive:(UIApplication*)application 
  
/* 在應用程式已進入後臺程式時,要執行的委託呼叫。所以要設定後臺繼續執行,則在這個函式裡面設定即可。
*/ (void) applicationDidEnterBackground:(UIApplication*)application /* 在應用程式將要進入前臺時(被啟用),要執行的委託呼叫,與applicationWillResignActive方法相對應。 */ (void) applicationWillEnterForeground:(UIApplication*)application /* 在應用程式已被啟用後,要執行的委託呼叫,剛好與 applicationDidEnterBackground 方法相對應。*/ (void) applicationDidBecomeActive:(UIApplication*)application
/* 在應用程式要完全退出的時候,要執行的委託呼叫。*/ (void) applicationWillTerminate:(UIApplication*)application

2、【全域性變數】 AppDelegate可以在整個應用程式中呼叫,可以使用程式碼段獲取AppDelegate的全域性變數:

AppDelegate *appDelegate=[[UIApplication sharedApplication]delegate];//因此可以在AppDelegate.h中定義需要全域性使用的變數。  
3、系統啟動代理(第一個頁面的載入:application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
一般在該代理介面中需要進行應用系統window(程式顯示視窗)配置,完成頁面彈出效果。(AppDelegate預設擁有UIWindow *window例項變數), 可以使用以下程式碼段完成:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];//顯示視窗配置    
 LoginViewController *login = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];//初始化應用系統需要顯示的第一個頁面(一般為ViewController)    
 self.window.rootViewController = login;//配置window視窗的rootViewController例項    
 //判定系統版本,選擇頁面載入方式    
 if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)  {    
     [self.window addSubview:login.view];    
 }  else  {    
     [self.window setRootViewController:login];    
 }    
 [self.window makeKeyAndVisible];    
 return YES; 

***補充:應用建立之後可以在Supporting Files分組中看到main.m類檔案,是整個應用最開始的入口。 執行的程式碼段為:

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
最後一個引數即為應用中的AppDelegate類的例項,執行這段程式即進入AppDelegate類中的applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法介面。

作者:達_Ambition
連結:https://www.jianshu.com/p/e4c2dd2afbc9
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。