1.最直接的方法performSelector:withObject:afterDelay:
这种方法的缺点:每次要为延时写一个方法
2.使用类别,用BOLCK执行

[代码]c#/cpp/oc代码:

01 @implementation NSObject (PerformBlockAfterDelay)
02  
03 - (void)performBlock:(void (^)(void))block
04           afterDelay:(NSTimeInterval)delay
05 {
06     block = [[block copy] autorelease];
07     [self performSelector:@selector(fireBlockAfterDelay:)
08                withObject:block
09                afterDelay:delay];
10 }
11  
12 - (void)fireBlockAfterDelay:(void (^)(void))block {
13     block();
14 }
15  
16 @end

3.使用GCD

[代码]c#/cpp/oc代码:

1 void RunBlockAfterDelay(NSTimeInterval delay, void (^block)(void))
2 {
3     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*delay),
4       dispatch_get_current_queue(), block);
5 }

4.可能是不太好的方法,用animation的completion参数

[代码]c#/cpp/oc代码:

1 [UIView animateWithDuration:0.0 delay:5.0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
2 } completion:^(BOOL finished) {
3     //do stuff here
4 }];

5.使用NSOperationQueue,在应用程序的下一个主循环执行:

[代码]c#/cpp/oc代码:

1 [[NSOperationQueue mainQueue] addOperationWithBlock:aBlock];
这个和调用performSelector: with afterDelay of 0.0f等价

IOS开发之延时执行的几种方法相关推荐

  1. 【Android】之【延时执行的几种方法】

    在Android日常开发中我们经常会有延时执行某个操作的需求,例如我们启动应用的时候,开始呈现一个引导页面,过了两三秒后,自动跳转到主界面:又如为了控制时序,需要延时执行等等. 下面整理下实现延时执行 ...

  2. Unity——延时执行的几种方法

    1.什么是延迟函数 延时执行的函数,可以自己设定延时要执行的函数和具体延时的时间,是Monobehaviour基类中实现好的方法 1.Update定时器 在Update等刷新函数内计时,timer + ...

  3. IOS开发中发送Email的两种方法

    IOS系统框架提供的两种发送Email的方法:openURL 和 MFMailComposeViewController.借助这两个方法,我们可以轻松的在应用里加入如用户反馈这类需要发送邮件的功能. ...

  4. iOS:延时执行的三种方式

    延时执行的三种方式:performSelectorXXX方法.GCD中延时函数.创建定时器 第一种方式:NSObject分类当中的方法,延迟一段时间调用某一个方法 @interface NSObjec ...

  5. IOS中延时执行的几种方式的比较

    本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...

  6. 痞子衡嵌入式:在MDK开发环境下将关键函数重定向到RAM中执行的几种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在MDK开发环境下将关键函数重定向到RAM中执行的几种方法. 这个关键函数重定向到 RAM 中执行系列文章,痞子衡已经写过 <IA ...

  7. 痞子衡嵌入式:在IAR开发环境下将关键函数重定向到RAM中执行的三种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将关键函数重定向到RAM中执行的三种方法. 嵌入式项目里应用程序代码正常是放在 Flash 中执行的,但有时候也需要将 ...

  8. iOS: JS和Native交互的两种方法,iosjsnative交互

    iOS: JS和Native交互的两种方法,iosjsnative交互 背景: UIWebView: iOS 用来展示 web 端内容的控件. 1. 核心方法: - (NSString*)string ...

  9. Java程序初始化启动自动执行的三种方法

    目录 @PostConstruct注解 CommandLineRunner接口 ApplicationRunner 接口 @Order注解设置启动顺序 分享一下自己用过的java程序初始化启动自动执行 ...

最新文章

  1. 【Zookeeper系列】ZooKeeper管理分布式环境中的数据(转)
  2. mvc后台字符串转换html,在mvc中,使用summernote编辑器,我想发送数据的内容字符串和HTML到控制器...
  3. BigDecimal类(精度计算类)的加减乘除
  4. android 退出app代码_uniapp退出APP应用(IOS+安卓)
  5. WEB API已成为构建客户端服务的利器?
  6. 读写分离mysql数据库mariadb_MariaDB数据库读写分离实现(一):mysql-proxy的使用
  7. Java并发编程的基础-其他的线程复位
  8. 决策树原理详解及python代码实现
  9. 牛客网 在线编程 数据流中的中位数
  10. java if,if...else...的应用
  11. 2017.10.10 取石子游戏 失败总结
  12. 华为麒麟1020处理器曝光:性能提升50%,5nm制程!Mate 40有望成为首发机型
  13. ClassLoader背景知识
  14. MyEclipse使用经验归纳
  15. 拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
  16. avaya CM查看VDN指向的技能组
  17. SOUI控件的自绘和消息处理
  18. 多种方法教你如何让手机免费上网
  19. 小白必看!DIY装机,电脑显示器选购
  20. 开源RapidScada插件开发---短信报警插件

热门文章

  1. substratum android8,如何在没有root的情况下在Android Oreo上安装Substratum主题
  2. P4128 [SHOI2006]有色图
  3. django模板使用
  4. 嵌入式学习之QT学习---8 QT网络编程之TCP通信
  5. android 画图一
  6. RIoTBoard开发板系列笔记(十二)—— gstreamer + vpu实现视频硬件解码播放
  7. YGG 在 Branch.gg 的免费游戏 Castaways 中购买了 Genesis NFT
  8. codeforces1292C Xenon‘s Attack on the Gangs
  9. iOS开发脚踏实地学习day01-02-加法计算器和图片移动缩放旋转
  10. iOS8定位问题解决方案