Rumah > Soal Jawab > teks badan
阿神2017-04-17 17:01:04
用 [NSTimer timerxxx]
那个方法创建 timer ,然后:
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
楼也也讲了,是次线程中 run loop 的问题
迷茫2017-04-17 17:01:04
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(dealTimerClick) userInfo:nil repeats:YES];
可以看下这个方法在文档中的描述:
Creates and returns a new NSTimer object and schedules it on the current run loop in the default mode.
主线程没有问题是因为主线程有自己的run loop,所以我想你在子线程上运行的时候需要自己配置下run loop。
大家讲道理2017-04-17 17:01:04
source = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());
dispatch_source_set_timer(_source, delay, interval * NSEC_PER_SEC, 0);
dispatch_source_set_event_handler(source, ^{
[weakTarget fire];
});
dispatch_resume(source);
记得在fire方法里面加入信号量控制