延迟方法_延时偏方亲测真实有效

延迟方法_延时偏方亲测真实有效1.performSelector-(void)performSelector:(SEL)aSelectorwithObject:(id)anArgumentafterDelay:(NSTime

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1.performSelector

– (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;

(1)aSelector:表示你要调用的方法

(2)anArgument:如果你要调用的方法中需要传递参数,那么anArgument就表示你要传递的值;如果你要调用的方法不需要传递参数,那么此处传nil

(3)delay:表示你要延迟的时间

使用此函数要注意的问题:

此函数执行时是单线程的,也就意味着你在用用这个函数时。必须等调用这个函数的方法全都执行完了以后才会执行此函数中你要调用的方法

 

如果你想要执行此函数的时候是多线程,那么可以用下面的方法:

 

– (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;

具体示例如下:

 

– (void)viewDidLoad

{

    [superviewDidLoad];

    [selfperformSelectorOnMainThread:@selector(output:)withObject:@”main thread”waitUntilDone:YES];//YES表示允许多线程,如果想要单线程执行,把YES变为NO 即可

     NSLog(@”what happened?”);

 

}

 

-(void)output:(NSString *)string{

    NSLog(@”this string is:%@”,string);

    

}

打印结果如下:

延迟方法_延时偏方亲测真实有效

 

这两种方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
暂时未找到取消执行的方法。

 

2.定时器:NSTimer

[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];

此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
可以通过NSTimer类的- (void)invalidate;取消执行。

3. sleep方式

[NSThread sleepForTimeInterval:1.0f]; [self delayMethod];

此方式在主线程和子线程中均可执行。
是一种阻塞的执行方式,建方放到子线程中,以免卡住界面
没有找到取消执行的方法。

4.GCD方式

double delayInSeconds = 1.0; 
 __block ViewController* bself = self; 
 dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
 [bself delayMethod]; });

此方式在可以在参数中选择执行的线程。
是一种非阻塞的执行方式,
没有找到取消执行的方法。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167856.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • inteliJ激活码 20213月最新在线激活

    inteliJ激活码 20213月最新在线激活,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    44
  • linux 句柄数限制_linux文件句柄数

    linux 句柄数限制_linux文件句柄数一个部署到linux下的中间件项目,当收到一个Client登录的时候,需要为这个Client打开四个文件,当进行多用户的大压力测试的时候,程序就出问题了:toomanyopenedfiles。网上一查,发现有人也碰到过类似的socket/File:Can’topensomanyfiles问题。在此总结一下这个问题,希望对后来之人有点帮助。解决之法:1,ulimit…

    2022年10月18日
    7
  • pycharm如何配置anaconda环境_2022年冬奥会在哪举行

    pycharm如何配置anaconda环境_2022年冬奥会在哪举行这是2022年我自己记录的Pycharm+Anaconda配置教程,还有一些安装时遇到的疑惑浅析。

    2022年8月29日
    7
  • linux重启nginx服务_centos7重启服务器命令

    linux重启nginx服务_centos7重启服务器命令连接服务器输入以下命令,如果要重启其他服务把nginx替换即可。servicenginxrestart出现以下页面即为成功

    2022年8月13日
    6
  • mysql数据目录的路径(数据库中的数据不可以共享)

    安装配置指南----------------一、下载SourceOffsiteV4.2官方下载地址,可以试用30天,试用期间无任何功能限制。http://search.newhua.com/search.asp?Keyword=sourceoffsite现在国内也有相关的中文版下载,本人使用没有什么区别,可能就是多一个VSS6.0。如果大家连VSS6.0都没有,就建议下载中文版。二、

    2022年4月13日
    44
  • isNotBlank_participate用法介绍

    isNotBlank_participate用法介绍isNotEmpty将空格也作为参数,isNotBlank则排除空格参数StringUtils方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException,而是做了相应处理,例如,如果输入为null则返回也是null等,具体可以查看源代码)。除了构造器,StringUtils中一共有130多个方法,并且都是static的,所以我们可以这样调用Str

    2022年8月12日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号