`
stephen830
  • 浏览: 2961931 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

IOS项目中AppDelegate详解

 
阅读更多

IOS项目中AppDelegate详解

 

AppDelegate.m文件

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

说明:当应用程序启动时执行,应用程序启动入口。只在应用程序启动时执行一次。application参数用来获取应用程序的状态、变量等,值得注意的是字典参数:(NSDictionary *)launchOptions,该参数存储程序启动的原因。

若用户直接启动,lauchOptions内无数据;

若由其他应用程序通过openURL:启动,则UIApplicationLaunchOptionsURLKey对应的对象为启动 URL(NSURL),UIApplicationLaunchOptionsSourceApplicationKey对应启动的源应用程序的 bundle ID (NSString);

若由本地通知启动,则UIApplicationLaunchOptionsLocalNotificationKey对应的是为启动应用程序的的本地通知对象(UILocalNotification);

若由远程通知启动,则UIApplicationLaunchOptionsRemoteNotificationKey对应的是启动应用程序的的远程通知信息userInfo(NSDictionary);

其他key还有UIApplicationLaunchOptionsAnnotationKey,UIApplicationLaunchOptionsLocationKey,
UIApplicationLaunchOptionsNewsstandDownloadsKey。
 如果要在启动时,做出一些区分,那就需要在下面的代码做处理。
比如:应用可以被某个其它应用调起(作为该应用的子应用),要实现单点登录,那就需要在启动代码的地方做出合理的验证,并跳过登录。    
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSURL *url = [options objectForKey:UIApplicationLaunchOptionsURLKey];
    if(url)
    {
    }
    NSString *bundleId = [options objectForKey:UIApplicationLaunchOptionsSourceApplicationKey];
    if(bundleId)
    {
    }
    UILocalNotification * localNotify = [options objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    if(localNotify)
    {
    }
    NSDictionary * userInfo = [options objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if(userInfo)
    {
    }
}                                                                                                                                                                                                                     2、-  (void)applicationWillResignActive:(UIApplication *)application

说明:当应用程序将要进入非活动状态时执行,在此期间,应用程序不接收消息或事件,比如来电话了

3、-  (void)applicationDidBecomeActive:(UIApplication *)application

说明:当应用程序进入活动状态时执行,这个刚好跟上面那个方法相反

4、- (void)applicationDidEnterBackground:(UIApplication  *)application

说明:当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可

5、-  (void)applicationWillEnterForeground:(UIApplication *)application

说明:当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。

6、-  (void)applicationWillTerminate:(UIApplication *)application

说明:当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值。



协议中其他定义的方法的作用:

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

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

2、- (void)applicationSignificantTimeChange:(UIApplication*)application

说明:当系统时间发生改变时执行

3、-  (void)applicationDidFinishLaunching:(UIApplication*)application

说明:当程序载入后执行

4、-  (void)application:(UIApplication)application  willChangeStatusBarFrame:(CGRect)newStatusBarFrame

说明:当StatusBar框将要变化时执行

5、-  (void)application:(UIApplication*)application willChangeStatusBarOrientation:

(UIInterfaceOrientation)newStatusBarOrientation

duration:(NSTimeInterval)duration

说明:当StatusBar框方向将要变化时执行

6、-  (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url

说明:当通过url执行

7、-  (void)application:(UIApplication*)application  didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation

说明:当StatusBar框方向变化完成后执行

8、-  (void)application:(UIApplication*)application didChangeSetStatusBarFrame:(CGRect)oldStatusBarFrame

说明:当StatusBar框变化完成后执行

 

分享到:
评论

相关推荐

    AppDelegate详解

    模板默认引入程序需要使用“类”的框架,即UIKit.h头文件,使它包含在程序中 #import <UIKit/UIKit.h>

    ios 使用xcode11 新建项目工程的步骤详解

    xcode11新建项目工程,新增了scenedelegate这个类,转而将原Appdelegate负责的对UI生命周期的处理担子接了过来。故此可以理解为:ios 13以后,Appdelegate负责处理App生命周期,scenedelegate负责处理UI生命周期的...

    IOS LaunchScreen设置启动图片与启动页停留时间详解

    新建的iOS 项目启动画面默认为LaunchScreen.xib  如果想实现一张图片作为启动页,如下图 如果启动不行 记得clear 一下工程 是启动页停留一段时间 只需要在 AppDelegate - (BOOL)application:(UIApplication...

    详解iOS集成融云SDK即时通讯整理

    实现步骤(以下代码放在单例中,可以是AppDelegate,最好单独写一个单例) 首先遵守RCIMUserInfoDataSource这个协议 然后是要设置代理 [[RCIM sharedRCIM] setUserInfoDataSource:self]; 最后实现代理方法: - ...

    详解ios中自定义cell,自定义UITableViewCell

    3、设置AppDelegate.m中window的根控制器为刚刚创建的TableViewController: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = ...

    详解iOS App中调用AVAudioPlayer播放音频文件的用法

    首先在 AppDelegate.m中初始化根视图 代码如下: #import “AppDelegate.h” #import “FirstVC.h” @implementation AppDelegate – (void)dealloc {  [_window release];  [super dealloc]; } – (BOOL)...

    iOS CoreData 增删改查详解

    最近在学习CoreData, 因为项目开发中需要,特意学习和整理了一下,整理出来方便以后使用和同行借鉴。目前开发使用的Swift语言开发的项目。所以整理出来的是Swift版本,OC我就放弃了。 虽然Swift3 已经有了,目前整理...

    详解iOS应用开发中Core Data数据存储的使用

    1.如果想创建一个带有coreData的程序,要在项目初始化的时候勾选中   2.创建完成之后,会发现在AppDelegate里多出了几个属性,和2个方法 代码如下:     @property (readonly, strong, nonatomic) ...

    详解iOS应用程序的启动过程

     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));  } } 可以看到main函数会调用UIApplicationMain函数,它的四个参数的意思是: argc: 代表程序在进入main函数时的参数的...

    iOS 10 推送高阶篇(必看)

    推荐阅读: iOS10推送之基础知识(必看篇)...所以大家还是需要在appdelegate中写上这2个方法,还有不要忘记在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchO

    Android中应用前后台切换监听的实现详解

    iOS 内边是可以实现的,AppDelegate 给了一个回调监听: @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { func applicationWillResignActive(_ application: UIApplication) { // ...

Global site tag (gtag.js) - Google Analytics