1、第一种方法 + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;2、第二种方法NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(newThread) object:nil];

     [thread start];
 - (void)newThread
{@autoreleasepool{[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(addTime) userInfo:nil repeats:YES];[[NSRunLoop currentRunLoop] run];}}3、第三种方法使用了GCD
dispatch_source_t _timers;
     uint64_t interval = 0.01 * NSEC_PER_SEC;dispatch_queue_t queue = dispatch_queue_create("my queue", 0);_timers = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);dispatch_source_set_timer(_timers, dispatch_time(DISPATCH_TIME_NOW, 0), interval, 0);__weak ViewController *blockSelf = self;dispatch_source_set_event_handler(_timers, ^(){NSLog(@"Timer %@", [NSThread currentThread]);[blockSelf addTime];});dispatch_resume(_timers);然后再主线程刷新
dispatch_async(dispatch_get_main_queue(), ^{         self.label.text = [NSString stringWithFormat:@"%.2f", self.timeCount/100];     });
(以上内容摘自http://www.faceye.net/search/120004.html)

转载于:https://www.cnblogs.com/moonSong/p/4991028.html

在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法相关推荐

  1. iOS开发之线程间的MachPort通信与子线程中的Notification转发

    如题,今天的博客我们就来记录一下iOS开发中使用MachPort来实现线程间的通信,然后使用该知识点来转发子线程中所发出的Notification.简单的说,MachPort的工作方式其实是将NSMa ...

  2. 为什么子线程中不能直接更新UI

    点击上方"dotNET全栈开发","设为星标" 加"星标★",每天11.50,好文必达 全文约4000字,预计阅读时间8分钟 当初有同事就碰 ...

  3. Qt对话框的事件循环分析(子线程中不能创建UI窗体分析)

    重要: GUI线程和辅助线程 如前所述,每个程序在启动时都有一个线程.这个线程被称为"主线程"(在Qt应用程序中也称为"GUI线程").Qt GUI必须在这个线 ...

  4. Qt对话框的事件循环分析(子线程中不能创建UI窗体分析2)

    Qt事件机制 QT-UI 后端 重要: GUI线程和辅助线程 如前所述,每个程序在启动时都有一个线程.这个线程被称为"主线程"(在Qt应用程序中也称为"GUI线程&quo ...

  5. Android子线程中更新UI的4种方法

    方法一:用Handler 1.主线程中定义Handler: Handler mHandler = new Handler() { @Override public void handleMessage ...

  6. Android进阶:六、在子线程中直接使用 Toast 及其原理

    最近因为个人原因,很久没有更文章,感谢关注的小伙伴,望谅解! 一般我们都把Toast当做一个UI控件在主线程显示.但是有时候非想在子线程中显示Toast,就会使用Handler切换到主线程显示. 但是 ...

  7. 在子线程中创建新的窗体,遇到的问题。

    场景: 服务端的应用程序创建了一个线程来接收客户端发来的消息,当接收到消息后,需要弹出一个新的窗体,作为响应操作等. 现象: 新创建的窗体呈现挂起.假死,或者一闪而过的现象. 原因: 新创建的响应窗体 ...

  8. java 异常处理线程_转:Java子线程中的异常处理(通用)

    在普通的单线程程序中,捕获异常只需要通过try ... catch ... finally ...代码块就可以了.那么,在并发情况下,比如在父线程中启动了子线程,如何正确捕获子线程中的异常,从而进行相 ...

  9. android 不能在子线程中更新ui的讨论和分析

    问题描述 做过android开发基本都遇见过 ViewRootImpl$CalledFromWrongThreadException,上网一查,得到结果基本都是只能在主线程中更改 ui,子线程要修改 ...

最新文章

  1. 李春平:钱不是奥黛莉赫本给的
  2. Redis ZSet 的几种使用场景
  3. ActiveMQ 依赖JDK版本
  4. rms 公式 有效值_有效值是电流电压的均方根值吗?
  5. CISA提醒:UPS联网设备正遭攻击
  6. k2698场效应管参数电流_值得一观!场效应管 VS 三极管
  7. Android改变图片颜色的自定义控件
  8. 内存不足时Android 系统如何Kill进程
  9. 浩鲸科技是外包公司吗_广东电商外包服务公司是什么意思_聚财猫科技
  10. swagger-ui快速入门教程
  11. stm32 带通滤波器_【安富莱——DSP教程】第37章 FIR滤波器的实现
  12. lj245a引脚功能图_74HC245引脚图应用电路与中文资料
  13. 图片批量重命名编号不要括号
  14. 星梦邮轮世界梦号推出深圳母港特别航次
  15. 马来西亚计算机科学与工程大学,一分钟了解世界名校马来西亚电脑科学与工程大学...
  16. 自己动手实现俄罗斯方块
  17. golang: 密码中允许出现数字、大写字母、小写字母、特殊字符,但至少包含其中2种且长度在8-16之间(四种符号任意满足三种即可)
  18. 一个Roguelike类型H5游戏的服务器开发——成就系统
  19. java获取工作日 日历接口_节假日api接口之获取指定日期的节假日信息
  20. revit 2021 r2(3D建筑信息模型构建软件)pjb 附安装教程

热门文章

  1. (基础)HTML文档结构知识点讲解
  2. 光影的魔法!Cocos Creator 实现屏幕空间的环境光遮蔽(SSAO)
  3. 买了台任天堂Switch
  4. linux利用grep查看打印匹配的下几行或前后几行的命令
  5. 英语笔记3(git)
  6. Json,Hashlib与Base64(占坑待补)
  7. 如何访问 Service?- 每天5分钟玩转 Docker 容器技术(99)
  8. 【面试经历】再惠网络、远景能源、东软集团
  9. C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
  10. 概要设计说明书(转载)