appDelegate 使用詳解
1.AppDelegate.h
模板默認引入程序需要使用“類”的框架,即UIKit.h頭文件,使它包含在程序中
import
此處@class聲明程序中的“類”名稱為
MyViewController @class MyViewController;
此處@interface聲明程序界面的名稱為MyAppDelegate,其中NSObject表示它的“類”符合 UIApplicationDelegate協(xié)議,接著UIApplicationDelegate,此方法為應用程序提供了關于觸發(fā)的關鍵事件信息,例 如什么時候程序運行完成,什么時候內存不足,什么時候重要變化發(fā)生
@interface MyAppDelegate : NSObject {
//定義一個程序顯示窗口的對象
UIWindow *window;
//加入視圖控制實際變量的對象
MyViewController *viewController;
}
此處@Property聲明程序的屬性,并且加入在前面@interface中指定的相同對象, 其中nonatomic是使用單線程機制減少系統(tǒng)資源使用,并將更改方法和修改方法生成在
Property(屬性),
接著retain,Property的可選項,表明向Property
(屬性)的對象發(fā)送一個retain(保留消息),
而IBOutlet表示對象在Interface Builder(Storyboard)中創(chuàng)建。
例如下面的代碼在應用程序中顯示了一個窗口控件,
把這個控件連接到nib文件并顯示在
Interface Builder (Storyboard)
@property (nonatomic, retain) IBOutlet UIWindow *window;
又例如,代碼在應用程序中顯示了一個視圖控制控件,
把這個控件連接到nib文件并顯示在
Interface Builder (Storyboard)
@property (nonatomic, retain) IBOutlet MyViewController *viewController;
程序結束點,表明結束MyViewController.h文件
@end
2.AppDelegate.m
協(xié)議中定義的這些需要實現(xiàn)的方法的作用:
1、- (void)applicationWillResignActive:(UIApplication *)application
說明:當應用程序將要入非活動狀態(tài)執(zhí)行,在此期間,應用程序不接收消息或事件,比如來電話了
2、- (void)applicationDidBecomeActive:(UIApplication *)application
說明:當應用程序入活動狀態(tài)執(zhí)行,這個剛好跟上面那個方法相反
3、- (void)applicationDidEnterBackground:(UIApplication *)application
說明:當程序被推送到后臺的時候調用。所以要設置后臺繼續(xù)運行,則在這個函數(shù)里面設置即可
4、- (void)applicationWillEnterForeground:(UIApplication *)application
說明:當程序從后臺將要重新回到前臺時候調用,這個剛好跟上面的那個方法相反。
5、- (void)applicationWillTerminate:(UIApplication *)application
說明:當程序將要退出是被調用,通常是用來保存數(shù)據(jù)和一些退出前的清理工作。這個需要要設置UIApplicationExitsOnSuspend的鍵值。
6、-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application
說明:iPhone設備只有有限的內存,如果為應用程序分配了太多內存操作系統(tǒng)會終止應用程序的運行,在終止前會執(zhí)行這個方法,通??梢栽谶@里進行內存清理工作防止程序被終止
7、- (void)applicationSignificantTimeChange:(UIApplication*)application
說明:當系統(tǒng)時間發(fā)生改變時執(zhí)行
8、- (void)applicationDidFinishLaunching:(UIApplication*)application
說明:當程序載入后執(zhí)行
9、- (void)application:(UIApplication)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame
說明:當StatusBar框將要變化時執(zhí)行
10、- (void)application:(UIApplication*)application willChangeStatusBarOrientation: (UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration
說明:當StatusBar框方向將要變化時執(zhí)行
11、- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url
說明:當通過url執(zhí)行
12、- (void)application:(UIApplication*)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation
說明:當StatusBar框方向變化完成后執(zhí)行
13、- (void)application:(UIApplication*)application didChangeSetStatusBarFrame:(CGRect)oldStatusBarFrame
說明:當StatusBar框變化完成后執(zhí)行