IOS中延时执行的几种方式的比较
2016-03-24 10:09
274 查看
本文列举了四种延时执行某函数的方法及其一些区别。假如延时1秒时间执行下面的方法。
1.performSelector方法
此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
暂时未找到取消执行的方法。
2.定时器:NSTimer
此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
可以通过NSTimer类的- (void)invalidate;取消执行。
3. sleep方式
此方式在主线程和子线程中均可执行。
是一种阻塞的执行方式,建方放到子线程中,以免卡住界面
没有找到取消执行的方法。
4.GCD方式
此方式在可以在参数中选择执行的线程。
是一种非阻塞的执行方式,
没有找到取消执行的方法。
- (void)delayMethod { NSLog(@"execute"); }
1.performSelector方法
[self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.0f];
此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
暂时未找到取消执行的方法。
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]; });
此方式在可以在参数中选择执行的线程。
是一种非阻塞的执行方式,
没有找到取消执行的方法。
相关文章推荐
- NSTimer使用注意事项
- iOS-CGContextAddArc各参数说明
- IOS开发之很简单的下拉刷新,包你满意
- IOS自适应前段库-Masonry的使用(转载)
- iOS 开发-删除storyboard的正确方法
- iOS开发之获取各种文件的目录路径的方法
- iOS 本地推送、远程推送及带快速回复的本地推送
- iOS从入门到颈椎病发作
- 实例讲解设计模式中的命令模式在iOS App开发中的运用
- iOS项目的Info.plist的一些设置mark
- virtualBox虚拟机安装64位操作系统BIOS的设置
- clang: error: no such file or directory: "xxxxxx" clang: error: no input files
- iOS的socket开发基础
- IOS开发编码规范
- iOS 单例传值遇见问题
- IOS键盘触摸退出总结
- iOS开发之NSRunLoop的进一步理解
- ios-序列帧动画核心代码简单介绍以及封装
- iOS GCD不同场景的使用比较
- ios-NSStringFromCGRect直接输出控件的frame