学习ios有一段时间了,但是对appdelegate中的那一堆方法一直都不是很清楚是干嘛用的,今天来认真的总结学习一下。
Window的创建:
iOS程序启动完毕后,先创建UIwindow,再创建控制器,创建控制器的view,然后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了。一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow。UIWindow是一种特殊的UIView,它相当于一块画框,而UIView相当于里面的画布。通常在一个app中只会有一个UIWindow。
Appdelegate内代理方法的实现:
1.当应用程序启动时执行,应用程序启动入口。只在应用程序启动时执行一次。application参数用来获取应用程序的状态、变量等
//程序启动完成调用此方法 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //系统会自动创建一个window,此时可直接调用window.并在此处设置window的一些属性。 //设置window的根目录 ViewController *viewc = [[ViewController alloc]init]; self.window.rootViewController = viewc; //这个是便捷方法,使被使用对象的主窗口显示到屏幕的最前端。也可以使用hiddenUIView方法隐藏这个窗口 [self.window makeKeyAndVisible]; return YES; }
2.应用程序将要进入非活动状态,即将进入后台,在此期间,应用程序不接收消息或事件,比如来电话了等一些请求
- (void)applicationWillResignActive:(UIApplication *)application { }
3.如果程序支持后台运行的话,当程序被推送到后台的时候调用。所以要设置后台继续运行,在这个方法里设置即可
- (void)applicationDidEnterBackground:(UIApplication *)application{ }
4.当程序从后台将要重新回到前台时候调用
- (void)applicationWillEnterForeground:(UIApplication *)applicatio{ }
5.应用程序已进入前台,处于活动状态
- (void)applicationDidBecomeActive:(UIApplication *)application { }
6.程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值。
- (void)applicationWillTerminate:(UIApplication *)application { }
全局变量
AppDelegate可以在整个应用程序中调用,在其他页面中可以使用代码段获取AppDelegate的全局变量:AppDelegate *appDelegate=[[UIApplication sharedApplication] delegate];
因此可以在AppDelegate.h中定义需要全局使用的变量