注册 登录
主题 : iOS11 GCD定时器crash问题
级别: 侠客
状态: 连续签到 - [2天]
UID: 189157
精华: 0
发帖: 60
可可豆: 285 CB
威望: 282 点
在线时间: 342(时)
注册时间: 2012-12-13
最后登录: 2018-07-18
0 楼:  发表于: 2018-03-14 17:13    发自: Web Page
来源于 一般提问 分类

iOS11 GCD定时器crash问题   

类中定义了一个成员变量
dispatch_source_t disptimer_install;
间断性重复调用scheduledInstall这个方法会崩溃,但是ios11以下的版本就没有问题。。


有谁遇到过吗。。。


复制代码
  1. - (void)scheduledInstall{
  2. if(disptimer_install !=nil)
  3. {
  4. dispatch_source_cancel(disptimer_install);
  5. }
  6. __block NSInteger nIndex =0;
  7. dispatch_queue_tqueue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
  8. disptimer_install=dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0,0, queue);
  9. dispatch_source_set_timer(disptimer_install,dispatch_walltime(NULL,0),1.0*NSEC_PER_SEC,0);
  10. WEAK(self);
  11. dispatch_source_set_event_handler(disptimer_install, ^{
  12. if(nIndex >=300)
  13. {
  14. dispatch_source_cancel(disptimer_install);
  15. nIndex =0;
  16. }
  17. nIndex++;
  18. });
  19. dispatch_resume(disptimer_install);
  20. }



关键词: ios 开发
级别: 侠客
UID: 68220
精华: 0
发帖: 82
可可豆: 622 CB
威望: 622 点
在线时间: 308(时)
注册时间: 2011-05-06
最后登录: 2018-07-17
1 楼:  发表于: 2018-07-05 11:28    发自: Web Page
调用dispatch_source_cancel(disptimer_install)后,将disptimer_install置为nil试下
级别: 骑士
状态: 连续签到 - [1天]
UID: 405796
精华: 0
发帖: 254
可可豆: 349 CB
威望: 339 点
在线时间: 318(时)
注册时间: 2014-11-24
最后登录: 2018-07-18
2 楼:  发表于: 2018-07-05 22:22    发自: Web Page
这操作好别扭,每一次调用都重新创建队列,还重复给timer赋值


dispatch_suspend(disptimer_install) //挂起定时器
和dispatch_resume(disptimer_install) //开启定时器

用上面两个方法就可以控制暂停和开启了。在操作之前记得判断一下timer的状态
级别: 版主

状态: 连续签到 - [7天]
UID: 123750
精华: 2
发帖: 2243
可可豆: 3650 CB
威望: 3571 点
在线时间: 1790(时)
注册时间: 2012-02-15
最后登录: 2018-07-18
3 楼:  发表于: 2018-07-06 09:17    发自: Web Page
* Calls to dispatch_suspend() must be balanced with calls
* to dispatch_resume().
*

楼上说的对,还要注意一定要 成对使用
<null>
级别: 骑士
状态: 连续签到 - [1天]
UID: 405796
精华: 0
发帖: 254
可可豆: 349 CB
威望: 339 点
在线时间: 318(时)
注册时间: 2014-11-24
最后登录: 2018-07-18
4 楼:  发表于: 2018-07-06 14:59    发自: Web Page
回 3楼(wszcug) 的帖子
是楼上教得好
级别: 新手上路
UID: 535029
精华: 0
发帖: 29
可可豆: 74 CB
威望: 74 点
在线时间: 236(时)
注册时间: 2015-12-29
最后登录: 2018-07-17
5 楼:  发表于: 2018-07-12 15:53    发自: Web Page
回 4楼(陌上红尘) 的帖子
这位大兄弟,在深圳找到新工作了吗? 行情怎么样
级别: 骑士
状态: 连续签到 - [1天]
UID: 405796
精华: 0
发帖: 254
可可豆: 349 CB
威望: 339 点
在线时间: 318(时)
注册时间: 2014-11-24
最后登录: 2018-07-18
6 楼:  发表于: 2018-07-12 18:33    发自: Web Page
回 5楼(Stefan_Lee) 的帖子
面试机会挺多的,大厂问的比较深入,小厂啥都问;年轻的面试官啥都问,年纪稍大的问两三个底层知识,然后考察发散思维。
我能力还不够吧,面了将近二十家,3年实际工作经验最多的给16k(HR说了句16,感觉如果好好谈的话拿17应该是没问题的,我没谈)
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部