关于iOS中延迟执行的几种方法
来源:互联网 发布:中医 数据库 编辑:程序博客网 时间:2024/05/16 17:07
1、方法一:使用dispatch_after
int64_t delayInSeconds = 10.0; // 延迟的时间/* *@parameter 1,时间参照,从此刻开始计时 *@parameter 2,延时多久,此处为秒级,还有纳秒等。10ull * NSEC_PER_MSEC */dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ // do something});
2、方法二:使用performSelector
/** * 延迟执行 * * @param aSelector 方法名称 * @param anArgument 要传递的参数,如果无参数,就设为nil * @param delay 延迟的时间 */- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay{}调用如下:[self performSelector:@selector(methodName) withObject:self afterDelay:0.25];
补充:
取消延迟执行的方法:
第一种:
/** * 取消延迟执行 * * @param aTarget 一般填self * @param aSelector 延迟执行的方法 * @param anArgument 设置延迟执行时填写的参数(必须和上面performSelector方法中的参数一样) */+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(nullable id)anArgument;注意:这是一个类方法,不能用实例对象去调用,只能用NSObject。
第二种:
+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget;// 使用:[NSObject cancelPreviousPerformRequestsWithTarget:self];这也是一个类方法,调用的话可以撤回全部申请延迟执行的方法。
还有两个常用的方法:
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(BOOL)wait;若wait是YES,则等待当前线程执行完以后,主线程才会执行aSelector方法;若wait是NO,则不等待当前线程执行完,就在主线程上执行aSelector方法。另外,如果当前线程是主线程,则立即执行aSelector方法。- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(nullable id)arg waitUntilDone:(BOOL)wait NS_AVAILABLE(10_5, 2_0);在指定线程中执行aSelector方法。
链接來源:简书作者:漂亮的男孩子
阅读全文
0 0
- 关于iOS中延迟执行的几种方法
- 关于iOS中延迟执行的几种方法
- iOS开发中方法延迟执行的几种方式
- iOS开发中方法延迟执行的几种方式
- iOS开发中方法延迟执行的几种方式
- iOS开发中方法延迟执行的几种方式
- iOS 开发中方法延迟执行的几种方式
- iOS 延迟执行的几种方法
- iOS --延迟执行的几种方法
- iOS开发 方法延迟执行的几种方式
- iOS开发中方法延迟执行的几种方式-简书
- 浅谈iOS开发中方法延迟执行的几种方式
- 浅谈iOS开发中方法延迟执行的几种方式(转载)
- 浅谈iOS开发中方法延迟执行的几种方式
- 浅谈iOS开发中方法延迟执行的几种方式
- 浅谈iOS开发中方法延迟执行的几种方式
- 浅谈iOS开发中方法延迟执行的几种方式
- Android中延迟执行方法的几种方式
- 使用github与Hexo搭建个人博客
- [POJ1836]Alignment
- 使用RTL-SDR和Matlab Simulink玩转软件无线电(十八)
- 用python写爬虫,爬取清纯妹子网站
- Spring歪解
- 关于iOS中延迟执行的几种方法
- JVM 的 工作原理,层次结构 以及 GC工作原理
- c++ GUI Qt4 的关于forward declaration of "class xxx 的错误"
- 序列问题
- 12.Scala中的继承:超类的构造、重写字段、重写方法代码实战
- 常用数组扩展
- mysql命令行不用输入用户名和密码的方法
- leetcode:Odd Even Linked List
- 分析if__name__==__main__