阿神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 NSer 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方法裡面加入信號量控制