当我们创建一个iOS项目,默认会有main.m类,这是一个程序的主入口。main.m方法体如下:

  1. #import <UIKit/UIKit.h>
  2. #import "AppDelegate.h"
  3. int main(int argc, charchar * argv[]) {
  4. @autoreleasepool {
  5. return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
  6. }
  7. }

在上述方法体中,UIApplicationMain()方法根据我们提供的AppDelegate类名来创建UIApplication的一个实例,且将这个AppDelegate作为UIApplication的委托,一般我们可以通过类方法[UIApplication shareApplication]来获取对UIApplication的一个引用。

在UIApplication接收到系统事件和生命周期事件时,会把相应的事件消息传递给UIApplicationDelegate进行处理,下面的声明周期函数都是可选的,一般都可以实现他们:

(1)

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

程序启动后执行的回调。

(2)

  1. - (void)applicationWillResignActive:(UIApplication *)application

应用程序将要由活动状态切换到非活动状态时执行的委托调用,如按下home 按钮,返回主屏幕,或全屏之间切换应用程序等。

(3)

  1. - (void)applicationDidEnterBackground:(UIApplication *)application

//在应用程序已进入后台程序时,要执行的委托调用。所以要设置后台继续运行,则在这个函数里面设置即可

(4)

  1. - (void)applicationWillEnterForeground:(UIApplication *)application

//在应用程序将要进入前台时(被激活),要执行的委托调用,与applicationWillResignActive 方法相对应。

(5)

  1. - (void)applicationDidBecomeActive:(UIApplication *)application

//在应用程序已被激活后,要执行的委托调用,刚好与  applicationDidEnterBackground 方法相对应。

(6)

  1. - (void)applicationWillTerminate:(UIApplication *)application

//在应用程序要完全退出的时候,要执行的委托调用。

(7)

  1. - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

iPhone设备只有有限的内存,如果为应用程序分配了太多内存操作系统会终止应用程序的运行,在终止前会执行这个方法,通常可以在这里进行内存清理工作防止程序被终止。

(8)

  1. - (void)applicationSignificantTimeChange:(UIApplication *)application

当系统时间发生改变时执行。

(9)

  1. -(void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame

当StatusBar状态栏大小发生改变时执行。

(10)

  1. -(void)application:(UIApplication *)application willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration

当Statusbar状态栏方向发生改变时执行。

(11)

  1. - (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url

当通过url时执行;

(12)

  1. - (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame

当Statusbar大小发生改变时执行;

(13)

  1. -(void)application:(UIApplication *)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation

当Statusbar方向发生改变后执行。

......

所以现在我们可以知道,AppDelegate就是整个项目的一个监听器,让我们实时了解当前程序的运行情况。

AppDelegate解析的更多相关文章

  1. 应用程序代理AppDelegate解析

    应用程序UIApplication是通过代理和外部交互的,当应用程序生命周期中发生改变时UIApplication就会调用代理对应的方法. @implementation AppDelegate - ...

  2. AppDelegate中的方法解析

    // 当应用程序启动完毕的时候就会调用(系统自动调用) -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOp ...

  3. [转载]iOS 10 UserNotifications 框架解析

    活久见的重构 - iOS 10 UserNotifications 框架解析 TL;DR iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifica ...

  4. xml文件解析(解析以后在RootTableViewController输出)

    这是从美团弄得xml文件,地区和经纬度. 你点了地区以后 ,  就可以查看经纬度 ,因为笔者懒, 有现成的文本框 , 所有偷懒了. 下面是一些枯燥的代码了 . #import <UIKit/UI ...

  5. cocos2d-x lua绑定解析

    花了几天时间看了下cocos2d-x lua绑定那块,总算是基本搞明白了,下面分三部分解析lua绑定: 一.lua绑定主要用到的底层函数 lua绑定其本质就是有一个公用的lua_Stack来进行C和L ...

  6. iOS 10 UserNotifications 框架解析

    摘自:https://onevcat.com/2016/08/notification/ iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifica ...

  7. iOS Storyboard全解析

    来源:http://iaiai.iteye.com/blog/1493956 Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明的说明Storyboard的效果, ...

  8. Cocos2dx.3x入门三部曲-Hello Game项目解析(三)

    一.前提: 完成Hello Game项目的创建编译. 具体参考:Cocos2dx.3x_Hello Game项目创建篇 二.本篇目标: l  分析proj.win32工程的主要构成 l  分析proj ...

  9. iOS XML  解析(原生的)

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

随机推荐

  1. 图层类(CCLayer)

    层 以捕鱼游戏场景为例,场景可以大致分为4层. 菜单层:悬浮于最上方的各种菜单项. 触摸层:处理在屏幕上的触摸点击时间. 动作层:放置鱼.子弹.网等,并处理碰撞. 背景层:背景图片. 如图2-2所示, ...

  2. 真相:中国版BBB用USB连电脑没有盘符的根本原因分析

    很多网友在问:为什么中国版的装完驱动插上板子没有显示端口号和69M的盘符??楼主发现,在开机启动的时候,加载g_multi模块时出现错误提示 invalid argument.         Emb ...

  3. C#泛型比较大小

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. 删除主目录下的.ssh目录下文件对boot2docker启动影响

    现象: 1) boot2docker ssh需要输入密码 2) boot2docker start 或 up 需要输入密码 解决方法: 1)删除 /Users/sunzhaoyu/.boot2dock ...

  5. 闲话shuffle(洗牌)算法

    工作中经常会用到洗牌算法,看到这篇文章不错,原文摘自:http://www.atatech.org/article/detail/11821/928  作者:子仲   场景 洗牌算法的应用场景其实很多 ...

  6. c语言,strcspn,在串中查找第一个给定字符集内容的段

    函数名: strcspn 功 能: 在串中查找第一个给定字符集内容的段 用 法: int strcspn(char *str1, char *str2); 程序例: #include <stdi ...

  7. 45种Javascript技巧大全【转藏】

    JavaScript是一个绝冠全球的编程语言,可用于Web开发.移动应用开发(PhoneGap.Appcelerator).服务器端开发(Node.js和Wakanda)等等.JavaScript还是 ...

  8. Maven 管理项目 jar出现miss

    这个情况出现在包并没有下载下来就断了,这样的情况就从别人机器上copy一份完好的jar直接报错的那个根目录给覆盖就好了.

  9. thinkphp之wampserver安装

    1.如何修改www目录 打开httpd.conf(wamp\bin\apache\Apache2.4.4\conf): 把DocumentRoot "c:/wamp/www" 修改 ...

  10. java新手笔记12 单例

    1.单例 package com.yfs.javase; public class Singleton { //private static final Singleton single = new ...