在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法
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计时的注意点 三种可选方法相关推荐
- iOS开发之线程间的MachPort通信与子线程中的Notification转发
如题,今天的博客我们就来记录一下iOS开发中使用MachPort来实现线程间的通信,然后使用该知识点来转发子线程中所发出的Notification.简单的说,MachPort的工作方式其实是将NSMa ...
- 为什么子线程中不能直接更新UI
点击上方"dotNET全栈开发","设为星标" 加"星标★",每天11.50,好文必达 全文约4000字,预计阅读时间8分钟 当初有同事就碰 ...
- Qt对话框的事件循环分析(子线程中不能创建UI窗体分析)
重要: GUI线程和辅助线程 如前所述,每个程序在启动时都有一个线程.这个线程被称为"主线程"(在Qt应用程序中也称为"GUI线程").Qt GUI必须在这个线 ...
- Qt对话框的事件循环分析(子线程中不能创建UI窗体分析2)
Qt事件机制 QT-UI 后端 重要: GUI线程和辅助线程 如前所述,每个程序在启动时都有一个线程.这个线程被称为"主线程"(在Qt应用程序中也称为"GUI线程&quo ...
- Android子线程中更新UI的4种方法
方法一:用Handler 1.主线程中定义Handler: Handler mHandler = new Handler() { @Override public void handleMessage ...
- Android进阶:六、在子线程中直接使用 Toast 及其原理
最近因为个人原因,很久没有更文章,感谢关注的小伙伴,望谅解! 一般我们都把Toast当做一个UI控件在主线程显示.但是有时候非想在子线程中显示Toast,就会使用Handler切换到主线程显示. 但是 ...
- 在子线程中创建新的窗体,遇到的问题。
场景: 服务端的应用程序创建了一个线程来接收客户端发来的消息,当接收到消息后,需要弹出一个新的窗体,作为响应操作等. 现象: 新创建的窗体呈现挂起.假死,或者一闪而过的现象. 原因: 新创建的响应窗体 ...
- java 异常处理线程_转:Java子线程中的异常处理(通用)
在普通的单线程程序中,捕获异常只需要通过try ... catch ... finally ...代码块就可以了.那么,在并发情况下,比如在父线程中启动了子线程,如何正确捕获子线程中的异常,从而进行相 ...
- android 不能在子线程中更新ui的讨论和分析
问题描述 做过android开发基本都遇见过 ViewRootImpl$CalledFromWrongThreadException,上网一查,得到结果基本都是只能在主线程中更改 ui,子线程要修改 ...
最新文章
- 李春平:钱不是奥黛莉赫本给的
- Redis ZSet 的几种使用场景
- ActiveMQ 依赖JDK版本
- rms 公式 有效值_有效值是电流电压的均方根值吗?
- CISA提醒:UPS联网设备正遭攻击
- k2698场效应管参数电流_值得一观!场效应管 VS 三极管
- Android改变图片颜色的自定义控件
- 内存不足时Android 系统如何Kill进程
- 浩鲸科技是外包公司吗_广东电商外包服务公司是什么意思_聚财猫科技
- swagger-ui快速入门教程
- stm32 带通滤波器_【安富莱——DSP教程】第37章 FIR滤波器的实现
- lj245a引脚功能图_74HC245引脚图应用电路与中文资料
- 图片批量重命名编号不要括号
- 星梦邮轮世界梦号推出深圳母港特别航次
- 马来西亚计算机科学与工程大学,一分钟了解世界名校马来西亚电脑科学与工程大学...
- 自己动手实现俄罗斯方块
- golang: 密码中允许出现数字、大写字母、小写字母、特殊字符,但至少包含其中2种且长度在8-16之间(四种符号任意满足三种即可)
- 一个Roguelike类型H5游戏的服务器开发——成就系统
- java获取工作日 日历接口_节假日api接口之获取指定日期的节假日信息
- revit 2021 r2(3D建筑信息模型构建软件)pjb 附安装教程