在后台线程中运行NSTimer以在主线程中完成时调用方法

时间:2014-05-13 22:42:28

标签: ios objective-c multithreading

我有一个静态方法,它创建一个NSTimer并在后台线程中运行它,如下所示:

+ (void) callInBackgroundThread {
    NSTimer *timer = [NSTimer timerWithTimeInterval:0.2
                                            target:self
                                          selector:@selector(callToMainThread)
                                          userInfo:nil repeats:NO];
    [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
}

然后我完成后调用主线程如下:

+ (void) callToMainThread{
    NSTimer *timer = [NSTimer timerWithTimeInterval:0
                                             target:self
                                           selector:@selector(foo1)
                                           userInfo:nil repeats:NO];
   [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
}

虽然这有效,但我觉得这很粗略,我想知道是否有更好的方法。 我很感激建议,请注意方法是静态的。

任何帮助都将不胜感激。

此致

1 个答案:

答案 0 :(得分:1)

performSelectorOnMainThread:withObject:waitUntilDone:也适用于课程!

+ (void) callToMainThread {
   [self performSelectorOnMainThread:@selector(foo1) withObject:nil waitUntilDone:NO];
}