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

这个方法是单线程的,也就是说只有当前调用次方法的函数执行完毕后,selector方法才会被调用。

比如:

- (void)changeText:(NSString *)string

{

label.text = string;

NSLog(@"changeText:(NSString *)string");

}

- (void)changePopoverSize

{

[self performSelector:@selector(changeText:) withObject:@"Happy aha" afterDelay:1];

NSLog(@"changePopoverSize#####end");

sleep(5);

NSLog(@"changePopoverSize-----end");

}

执行结果(注意时间):

2012-08-17 17:14:06.697 awrbv[1973:f803] changePopoverSize#####end

2012-08-17 17:14:11.698 awrbv[1973:f803] changePopoverSize-----end

2012-08-17 17:14:11.701 awrbv[1973:f803] changeText:(NSString *)string

如果要想多线程的话,可以是使用

- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg

或者

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

代码如下:

- (void)changeText:(NSString *)string

{

label.text = string;

NSLog(@"changeText:(NSString *)string");

}

- (void)changePopoverSize

{

[self performSelectorOnMainThread:@selector(changeText:) withObject:@"Happy aha111" waitUntilDone:YES];

NSLog(@"changePopoverSize#####end");

sleep(5);

NSLog(@"changePopoverSize-----end");

}

执行结果如下:

2012-08-17 17:19:29.618 awrbv[2024:f803] changeText:(NSString *)string

2012-08-17 17:19:29.619 awrbv[2024:f803] changePopoverSize#####end

2012-08-17 17:19:34.620 awrbv[2024:f803] changePopoverSize-----end

可以看出,如果waitUntilDone:YES那么等changeText执行完毕后再往下执行

如果waitUntilDone:NO的话,结果如下:

2012-08-17 17:21:12.135 awrbv[2049:f803] changePopoverSize#####end

2012-08-17 17:21:17.137 awrbv[2049:f803] changePopoverSize-----end

2012-08-17 17:21:17.139 awrbv[2049:f803] changeText:(NSString *)string


转载于:https://blog.51cto.com/salofighting/1297019

IOS开发:关于performSelectorXXX的延迟的使用相关推荐

  1. iOS开发中didSelectRowAtIndexPath tap事件响应延迟

    iOS开发中didSelectRowAtIndexPath tap事件响应延迟 为UITableViewCell添加tapped事件,代码如下: class VideoViewController: ...

  2. iOS开发系列--让你的应用“动”起来

    概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画 ...

  3. iOS开发之让你的应用“动”起来转写

    在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画.动画 ...

  4. iOS开发工具——网络封包分析工具Charles

    iOS开发工具--网络封包分析工具Charles 简介 Charles是在Mac下常用的截取网络封包的工具,在做iOS开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Char ...

  5. iOS开发系列--并行开发其实很容易

    --多线程开发 概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算.可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行.但是机器码是按顺序执行的, ...

  6. iOS开发系列--无限循环的图片浏览器

    概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件都介绍一遍确实没有必要,所谓授人以鱼不如授 ...

  7. iOS开发UI篇—懒载入

    iOS开发UI篇-懒载入 1.懒载入基本 懒载入--也称为延迟载入,即在须要的时候才载入(效率低,占用内存小).所谓懒载入,写的是其get方法. 注意:假设是懒载入的话则一定要注意先推断是否已经有了. ...

  8. iOS开发-多线程编程技术(Thread、Cocoa operations、GCD)

    简介 在软件开发中,多线程编程技术被广泛应用,相信多线程任务对我们来说已经不再陌生了.有了多线程技术,我们可以同做多个事情,而不是一个一个任务地进行.比如:前端和后台作交互.大任务(需要耗费一定的时间 ...

  9. ios加载本地html懒加载图片方案,IOS开发中加载大量网络图片优化方法

    IOS开发中加载大量网络图片如何优化 1.概述 在IOS下通过URL读一张网络图片并不像其他编程语言那样可以直接把图片路径放到图片路径的位置就ok,而是需要我们通过一段类似流的方式去加载网络图片,接着 ...

  10. iOS 开发之动画篇 - 从 UIView 动画说起

    毋庸置疑的:在iOS开发中,制作动画效果是最让开发者享受的环节之一.一个设计严谨.精细的动画效果能给用户耳目一新的效果,吸引他们的眼光 -- 这对于app而言是非常重要的. 本文作为动画文集的第一篇, ...

最新文章

  1. linux下使用gcp拷贝数据的时候显示进度条
  2. ubuntu14.04 nginx php编译安装,Ubuntu 14.04 编译安装 Nginx
  3. ZigBee,ZStack
  4. 在asp.net中调用process.start执行程序
  5. activitimq集群搭建_Spring-activiti
  6. C++编程技术之 异常处理(上)
  7. 培训笔记——2019年性能测试
  8. Matlab常用快捷键
  9. Django之ORM的增删改查
  10. 2017c语言考核册答案,2017年计算机二级C语言考前练习试题及答案2
  11. linux jdk1.8 32位下载永久地址,ubuntu,centos,java
  12. PikPak磁力网盘
  13. Java 关于CoolProp的调用
  14. Windows安装curl
  15. 热切换Log4j日志级别
  16. 保证金监控中心保证期货开户和交易记录
  17. iOS 福利局之开发加速库分享
  18. Only fullscreen opaque activities can request orientation 最好的解析
  19. mmpi明尼苏达多项人格测验量表解读
  20. 【UCIe】UCIe NOP 介绍

热门文章

  1. NutzWk 5.2.4 发布,Java 微服务分布式开发框架
  2. COSO企业风险管理框架2017版发布!看看有哪些变化?
  3. 日媒:中国去年装机量猛增 成最大光伏日媒:中国去年装机量猛增 成最大光伏发电国家发电国家...
  4. url模块和querystring模块
  5. Beyond Compare 4比较文件夹要设置基键吗?
  6. python---骰子游戏
  7. jQuery,Ajax.animate,SVG(简要学习笔记二十)[完结篇]
  8. JAVA对象通过jackson转成json格式,属性名首字母变成小写的解决方法
  9. MemberShip使用大全
  10. 找不到命令报错bash:command not found解决方案