当前位置:首页 > CN2资讯 > 正文内容

python 解除windows10锁屏

3天前CN2资讯

 

由于接触ios不久,虽然项目可以做,但是对于UIApplication、AppDelegate这几个概念不是很熟悉,今天早上总结整理一下,找到一篇不错的博文,我就分享出来了。

UIApplication、AppDelegate、委托等的关系?  
什么是委托?为什么要有委托?委托在Iphone中的实现机制是怎样的?  

一般来说,我们创建了一个Iphone项目,默认会有这个main.m类,我们都晓得,一个main()方法代表着一个应用程序的入口,  
以下是对应的main.m的方法体:

int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } 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、- (void)applicationWillResignActive:(UIApplication *)application  
说明:当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了  


2、- (void)applicationDidBecomeActive:(UIApplication *)application  
说明:当应用程序入活动状态执行,这个刚好跟上面那个方法相反  


3、- (void)applicationDidEnterBackground:(UIApplication *)application  
说明:当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可  


4、- (void)applicationWillEnterForeground:(UIApplication *)application  
说明:当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。  


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


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


7、- (void)applicationSignificantTimeChange:(UIApplication*)application  
说明:当系统时间发生改变时执行  


8、- (void)applicationDidFinishLaunching:(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 didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation  
说明:当StatusBar框方向变化完成后执行  


13、- (void)application:(UIApplication*)application didChangeSetStatusBarFrame:(CGRect)oldStatusBarFrame  
说明:当StatusBar框变化完成后执行  


iPhone中的应用程序很容易受到打扰,比如一个来电可能导致应用程序失去焦点,如果这个时候接听了电话,那么应用程序会转到后台运行。  
还有很多其它类似的事件会导致iPhone应用程序失去焦点,在应用程序失去焦点前会调用委托类的applicationWillResignActive()方法,  
而应用程序再次获取到焦点的时候会调用applicationDidBecomeActive()方法。  
比如在运行应用程序的时候锁屏会调用委托类的applicationWillResignActive()方法,而当屏幕被解锁的时候,又会调用applicationDidBecomeActive()方法。  
   
另外一个非常重要的方法就是applicationDidReceiveMemoryWarning(),因为iPhone设备只有有限的内存,如果为应用程序分配了太多内存操作系统会终止应用程序的运行,但在终止之前操作系统会通过先调用委托类的applicationDidReceiveMemoryWarning()方法警告应用程序,在UIApplication接收到这个事件后它会传递给委托类的applicationDidReceiveMemoryWarning()方法,委托类在这个方法内可以进行释放内存的操作以防止操作系统强制终止应用程序的运行。  
下面是这个类的一些功能:  
1.设置icon上的数字图标  
    //设置主界面icon上的数字图标,在2.0中引进, 缺省为0  
    [UIApplication sharedApplication].applicationIconBadgeNumber = 4;  
2.设置摇动手势的时候,是否支持redo,undo操作  
    //摇动手势,是否支持redo undo操作。  
   //3.0以后引进,缺省YES  
    [UIApplication sharedApplication].applicationSupportsShakeToEdit =YES;  


3.判断程序运行状态  
    //判断程序运行状态,在2.0以后引入

/* UIApplicationStateActive, UIApplicationStateInactive, UIApplicationStateBackground */ if([UIApplication sharedApplication].applicationState ==UIApplicationStateInactive){ NSLog(@"程序在运行状态"); } /* UIApplicationStateActive, UIApplicationStateInactive, UIApplicationStateBackground */ if([UIApplication sharedApplication].applicationState ==UIApplicationStateInactive){ NSLog(@"程序在运行状态"); }

4.阻止屏幕变暗进入休眠状态  
    //阻止屏幕变暗,慎重使用,缺省为no 2.0  
    [UIApplicationsharedApplication].idleTimerDisabled =YES;  
慎重使用本功能,因为非常耗电。  
5.显示联网状态  
    //显示联网标记 2.0  
    [UIApplication sharedApplication].networkActivityIndicatorVisible =YES;  

6.在map上显示一个地址

NSString* addressText =@"1 Infinite Loop, Cupertino, CA 95014"; // URL encode the spaces addressText = [addressTextstringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; NSString* urlText = [NSStringstringWithFormat:@"http:///maps?q=%@", addressText]; [[UIApplication sharedApplication]openURL:[NSURLURLWithString:urlText]]; NSString* addressText =@"1 Infinite Loop, Cupertino, CA 95014"; // URL encode the spaces addressText = [addressTextstringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; NSString* urlText = [NSStringstringWithFormat:@"http:///maps?q=%@", addressText]; [[UIApplication sharedApplication]openURL:[NSURLURLWithString:urlText]];

7.发送电子邮件

NSString *recipients =@"mailto:[email protected][email protected],[email protected]&subject=Hello from California!"; NSString *body =@"&body=It is raining in sunny California!"; NSString *email = [NSStringstringWithFormat:@"%@%@", recipients, body]; email = [emailstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; [[UIApplication sharedApplication]openURL:[NSURLURLWithString:email]]; NSString *recipients =@"mailto:[email protected][email protected],[email protected]&subject=Hello from California!"; NSString *body =@"&body=It is raining in sunny California!"; NSString *email = [NSStringstringWithFormat:@"%@%@", recipients, body]; email = [emailstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; [[UIApplication sharedApplication]openURL:[NSURLURLWithString:email]];

8.打电话到一个号码  


   // Call Google 411  
    [[UIApplication sharedApplication]openURL:[NSURLURLWithString:@"tel://8004664411"]];  
9.发送短信  
    // Text to Google SMS  
    [[UIApplication sharedApplication]openURL:[NSURLURLWithString:@"sms://466453"]];  
10.打开一个网址  


   // Lanuch any iPhone developers fav site  
    [[UIApplication sharedApplication]openURL:[NSURLURLWithString:@"http://itunesconnect.apple.com"]];  




UIApplication:一般是指运行中的应用程序,它的一个主要工作是处理用户事件,它会引起一个队列,所有的用户事件都放入到队列中,  
逐个被处理掉,在处理的时候,它会发送事件到一个合适的处理事件的目标控件,此外,UIApplication还维护在本应用程序中打开的  
Window列表(UIWindow实例),这样子它就可以接触应用程序中的任何一个UIView对象;  
AppDelegate:负责为另外一个对象处理特定事件的类,比如我们load完一个页面的时候,委托就帮助UIApplication完成  
didFinishLaunchingWithOptions动作,相应地在这个方法里面执行对应地action;  
委托是给一个对象提供机会对另一个对象中的变化作出反映或者影响另一个对象的行为,通常包括3种动词:should、will、did  

UIApplication委托AppDelegate,则AppDelegate必须得实现UIApplicationDelegate协议,这个协议我们可以当成是java中的一个接口,  
协议中定义了一系列方法,我们必须在子类中将其实现,然后底层UIApplication会自动去调用我们已经定义好的方法,这有点类似java中Ioc方向控制机制  
当然,iphone中运用委托设计模式的地方很多,比如这个UIActionSheetDelegate、UIAlertViewDelegate协议,比如我们要在自己的某个界面中展示  
这个操作表(UIActionSheet),则我们的视图控制器必须要实现这个UIActionSheetDelegate协议,重写其中的某些方法,也就是说,谁被委托了,  
谁就要实现协议中定义的方法,确保正常的调用


 

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/27787.html

    分享给朋友:

    “python 解除windows10锁屏” 的相关文章

    如何在Ubuntu上安装BBR Plus以提高网络性能

    在谈论BBR Plus之前,我们得先来了解一下BBR。BBR即“Bottleneck Bandwidth and Round-trip time”的缩写,这是Google推出的一种拥塞控制算法,它被集成在最新的Linux内核中。它的核心理念在于通过更合理的方式来计算网络的瓶颈带宽和往返时间。这种算法...

    香港CDN服务:提升网站访问速度和用户体验的最佳选择

    在互联网时代,用户愈发关注访问速度和网站体验,这时CDN(内容分发网络)的作用就显得尤为重要。简单来说,CDN是通过在全球各地设置节点,帮助将内容快速传递给用户,从而减少延迟,提高访问速度。我曾经亲身体验过CDN带来的便利,当我访问一些需要加载大量图片和视频的网站时,CDN能确保这些内容更快呈现,给...

    深入了解CN2 GIA VPS:选择更快稳定的虚拟专用服务器

    在现代互联网环境中,选择合适的虚拟专用服务器(VPS)至关重要。CN2 GIA VPS,则是个不错的选择。它基于中国电信的CN2 GIA国际精品网络,这一网络是中国电信下一代承载网络的高端产品,又被称为Chinatelecom Next Carrier Network- Global Interne...

    物语云:为游戏行业提供高效安全的云计算解决方案

    物语云概述 物语云是北京物语云联网络科技有限公司旗下的云计算品牌。这一品牌专注于为游戏行业提供一系列数据中心基础服务和互联网业务解决方案,其产品线包括专属服务器租用、云服务器、虚拟主机、服务器托管及带宽租用等。物语云的目标在于为客户提供高效、安全、经济的云计算服务,从而帮助他们在激烈的市场竞争中立足...

    电信163回程路由怎么样?性能与用户体验全解析

    电信163回程路由的基本概况 在了解电信163回程路由之前,首先让我来解释一下它到底是什么。电信163回程路由是中国电信所提供的一种数据传输路径,主要用于支撑用户从国外访问中国国内的数据流。这条路由有助于保证数据在传输过程中的稳定性与可靠性,因此对于使用网络服务的企业或个人尤为重要。 电信163回程...

    搬瓦工中文网:轻松掌握VPS服务与网络加速技巧

    当我第一次听到“搬瓦工”这个名字时,感觉它似乎很神秘,直觉告诉我,这背后一定有许多有趣的内容。经过一番了解后,我发现搬瓦工其实是一款基于VPS(虚拟专用服务器)的服务,主要帮助用户实现网络加速与资源的灵活使用。简而言之,搬瓦工让用户能够在更广阔的网络环境中畅游,不受地理限制。 搬瓦工的功能非常多样,...