我想知道是否有人可以解释为什么调度回主队列并创建一个重复NSTimer
我必须将它添加到 RUN LOOP 因为它太火了?即使在使用时,performselectorOnMainThread
我仍然必须将其添加到 RUN LOOP 以使其触发。
下面是我的问题的一个例子:
#define queue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
#define mainqueue dispatch_get_main_queue()
- (void)someMethodBeginCalled
{
dispatch_async(queue, ^{
int x = 0;
dispatch_async(mainqueue, ^(void){
if([_delegate respondsToSelector:@selector(complete:)])
[_delegate complete:nil];
});
});
}
- (void)compelete:(id)object
{
[self startTimer];
//[self performSelectorOnMainThread:@selector(startTimer) withObject:nil waitUntilDone:NO];
}
- (void)startTimer
{
NSTimer timer = [NSTimer timerWithTimeInterval:3 target:self selector:@selector(callsomethingelse) userInfo:nil repeats:YES];
//NSDefaultRunLoopMode
[[NSRunLoop currentRunLoop] addTimer:_busTimer forMode:NSRunLoopCommonModes];
}
编辑:
我相信我对这个问题的措辞很糟糕。如果我打电话,我想知道为什么 [[NSRunLoop currentRunLoop] addTimer:_busTimer forMode:NSRunLoopCommonModes];
有必要。如果我不包括该行,则计时器不会触发。startTimer
someMethodBeginCalled
例如,如果我打电话startTimer
,我可以删除线路,计时器将每 60 秒触发一次。viewDidLoad
NSRunLoop