iOS AppDelegate浅析
2015-10-20 22:06
417 查看
当我们创建一个iOS项目,默认会有main.m类,这是一个程序的主入口。main.m方法体如下:
在上述方法体中,UIApplicationMain()方法根据我们提供的AppDelegate类名来创建UIApplication的一个实例,且将这个AppDelegate作为UIApplication的委托,一般我们可以通过类方法[UIApplication shareApplication]来获取对UIApplication的一个引用。
在UIApplication接收到系统事件和生命周期事件时,会把相应的事件消息传递给UIApplicationDelegate进行处理,下面的声明周期函数都是可选的,一般都可以实现他们:
(1)
(2)
应用程序将要由活动状态切换到非活动状态时执行的委托调用,如按下home 按钮,返回主屏幕,或全屏之间切换应用程序等。
(3)
(4)
//在应用程序将要进入前台时(被激活),要执行的委托调用,与applicationWillResignActive 方法相对应。
(5)
//在应用程序已被激活后,要执行的委托调用,刚好与 applicationDidEnterBackground 方法相对应。
(6)
//在应用程序要完全退出的时候,要执行的委托调用。
(7)
iPhone设备只有有限的内存,如果为应用程序分配了太多内存操作系统会终止应用程序的运行,在终止前会执行这个方法,通常可以在这里进行内存清理工作防止程序被终止。
(8)
当系统时间发生改变时执行。
(9)
当StatusBar状态栏大小发生改变时执行。
(10)
当Statusbar状态栏方向发生改变时执行。
(11)
当通过url时执行;
(12)
当Statusbar大小发生改变时执行;
(13)
当Statusbar方向发生改变后执行。
......
所以现在我们可以知道,AppDelegate就是整个项目的一个监听器,让我们实时了解当前程序的运行情况。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!
#import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }
在上述方法体中,UIApplicationMain()方法根据我们提供的AppDelegate类名来创建UIApplication的一个实例,且将这个AppDelegate作为UIApplication的委托,一般我们可以通过类方法[UIApplication shareApplication]来获取对UIApplication的一个引用。
在UIApplication接收到系统事件和生命周期事件时,会把相应的事件消息传递给UIApplicationDelegate进行处理,下面的声明周期函数都是可选的,一般都可以实现他们:
(1)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions程序启动后执行的回调。
(2)
- (void)applicationWillResignActive:(UIApplication *)application
应用程序将要由活动状态切换到非活动状态时执行的委托调用,如按下home 按钮,返回主屏幕,或全屏之间切换应用程序等。
(3)
- (void)applicationDidEnterBackground:(UIApplication *)application//在应用程序已进入后台程序时,要执行的委托调用。所以要设置后台继续运行,则在这个函数里面设置即可
(4)
- (void)applicationWillEnterForeground:(UIApplication *)application
//在应用程序将要进入前台时(被激活),要执行的委托调用,与applicationWillResignActive 方法相对应。
(5)
- (void)applicationDidBecomeActive:(UIApplication *)application
//在应用程序已被激活后,要执行的委托调用,刚好与 applicationDidEnterBackground 方法相对应。
(6)
- (void)applicationWillTerminate:(UIApplication *)application
//在应用程序要完全退出的时候,要执行的委托调用。
(7)
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
iPhone设备只有有限的内存,如果为应用程序分配了太多内存操作系统会终止应用程序的运行,在终止前会执行这个方法,通常可以在这里进行内存清理工作防止程序被终止。
(8)
- (void)applicationSignificantTimeChange:(UIApplication *)application
当系统时间发生改变时执行。
(9)
-(void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame
当StatusBar状态栏大小发生改变时执行。
(10)
-(void)application:(UIApplication *)application willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration
当Statusbar状态栏方向发生改变时执行。
(11)
- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url
当通过url时执行;
(12)
- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
当Statusbar大小发生改变时执行;
(13)
-(void)application:(UIApplication *)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation
当Statusbar方向发生改变后执行。
......
所以现在我们可以知道,AppDelegate就是整个项目的一个监听器,让我们实时了解当前程序的运行情况。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!
相关文章推荐
- 怎么让公众号的内容更有威力?
- 怎么让公众号的内容更有威力?
- iOS KVC 集合操作
- Mac下使用微信Android资源混淆打包工具
- Android-教你自作一个简单而又实用的流式Tag标签布局
- android开源项目框架大全:《IT蓝豹》
- Unity Shader UV动画(序列帧动画)
- iOS绘制渐变背景滑动条
- Android中补间动画的实现
- OpenStack: Storage 组件 Swift 和 Cinder(转)
- Android开发中无处不在的设计模式——观察者模式
- iOS NSLayoutConstraint priority
- Android_06_Activity跳转时,数据的传递及接收
- iOS AutoLayout 百分比布局
- iOS代码设置渐变背景色
- UNITY 5.2 Resources类
- iOS设计模式 - 组合
- iOS NSData 和十六进制字符串之间的相互转换
- Android之app引导页(背景图片切换加各个页面动画效果)
- Android对话框Dialog,PopupWindow,Toast的实现机制