您现在的位置:主页 > 新闻动态 >

深入理解iPhone委托模式兼谈iPhone生命周期

时期:2021-11-28 06:46 点击数:
本文摘要:每个iPhone应用程序都有一个UIApplication,UIApplication是iPhone应用程序的开始并且负责管理初始化并表明UIWindow,并负责管理读取应用程序的第一个UIView到UIWindow窗体中。UIApplication的另一个任务是协助管理应用程序的生命周期,而UIApplication通过一个名字为UIApplicationDelegate的代理类来遵守这个任务。

leyu乐鱼全站app

每个iPhone应用程序都有一个UIApplication,UIApplication是iPhone应用程序的开始并且负责管理初始化并表明UIWindow,并负责管理读取应用程序的第一个UIView到UIWindow窗体中。UIApplication的另一个任务是协助管理应用程序的生命周期,而UIApplication通过一个名字为UIApplicationDelegate的代理类来遵守这个任务。尽管UIApplication不会负责管理接管事件,而UIApplicationDelegate则要求应用程序如何去号召这些事件,UIApplicationDelegate可以处置的事件还包括应用程序的生命周期事件(比如程序启动和重开)、系统事件(比如电话、记事项警告),本文不会讲解如何读取应用程序的UIView到UIWindow以及如何利用UIApplicationDelegate处置系统事件。

  一般来说对于UIApplication读者是没有适当改动它的,只必须告诉UIApplication接管系统事件才可,而如何撰写代码来处置这些系统事件则是程序员的工作。处置系统事件必须撰写一个承继自UIApplicationDelegate模块的类,而UIApplicationDelegate模块获取生命周期函数来处置应用程序以及应用程序的系统事件,这些生命周期函数如下表格右图:  UIApplicationDelegateEvent-HandlingMethodsMethodSignature1:application:didChangeStatusBarFrame:-(void)application:(UIApplication*)applicationdidChangeSetStatusBarFrame:(CGRect)oldStatusBarFrame2:application:didChangeStatusBarOrientation:-(void)application:(UIApplication*)applicationdidChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation3:application:handleOpenURL:-(BOOL)application:(UIApplication*)applicationhandleOpenURL:(NSURL*)url4:application:willChangeStatusBarOrientation:duration:-(void)application:(UIApplication*)applicationwillChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientationduration:(NSTimeInterval)duration5:application:willChangeStatusBarFrame-(void)application:(UIApplication)applicationwillChangeStatusBarFrame:(CGRect)newStatusBarFrame6:applicationDidBecomeActive:-(void)applicationDidBecomeActive:(UIApplication*)application7:applicationDidFinishLaunching:-(void)applicationDidFinishLaunching:(UIApplication*)application8:applicationDidReceiveMemoryWarning:-(void)applicationDidReceiveMemoryWarning:(UIApplication*)application9:applicationSignificantTimeChange:-(void)applicationSignificantTimeChange:(UIApplication*)application10:applicationWillResignActive:-(void)applicationWillResignActive:(UIApplication*)application11:applicationWillTerminate:-(void)applicationWillTerminate:(UIApplication*)application表格1  如果利用Xcode的模板创立项目,Xcode不会为程序员创立承继自UIApplicationDelegate的类,但会自动构建承继自UIApplicationDelegate的附加的事件处理函数。如果读者创立一个取名为TestUIApplication的项目,Xcode不会自动创立TestUIApplicationAppDelegate.h和TestUIApplicationAppDelegate.m文件,文件的声明如下:  @interfaceTestUIApplicationAppDelegate:NSObject《UIApplicationDelegate》  而应用程序的UIApplication则被定义在MainWindow.xib文件中,并且有一个作为outlet的UIApplicationDelegate提到,如下图:    图1  当应用程序接管到表格1中的事件时,UIApplication不会调用UIApplicationDelegate中构建的适当的方法。  彻底谈,委托(delegate)是iPhone中普遍使用的一种编程方法,这种方法有很多益处:  它更加简练的把程序的逻辑处置从UIApplication中分离出来了出来。

  它防止了程序员必要从UIApplication衍生子类,比如说如果通过从UIApplication衍生子类的方法来管理应用程序的生命周期和系统事件是多么伤痛的一件事情。


本文关键词:乐鱼官网推荐,深入,理解,iPhone,委托,模式,兼谈,生命,周期

本文来源:leyu乐鱼全站app-www.michael-andre.com



Copyright © 2007-2021 www.michael-andre.com. leyu乐鱼全站app科技 版权所有 备案号:ICP备38989592号-5