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

Ios 在后台线程中运行NSTimer,在主线程中完成时调用方法,ios,objective-c,multithreading,Ios,Objective C,Multithreading,我有一个静态方法,创建一个NSTimer并在后台线程中运行它,如下所示: + (void) callInBackgroundThread { NSTimer *timer = [NSTimer timerWithTimeInterval:0.2 target:self selector:@selector(callTo

我有一个静态方法,创建一个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];
}
虽然这是可行的,但我觉得这是相当粗略的,我想知道是否有更好的方法来做到这一点。 我很感激你的建议,请注意这里的方法是静态的

任何帮助都将不胜感激


关于

performSelectorOnMainThread:withObject:waitUntilDone:
也适用于类

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

这是关于NSTimers和GCD的链接:@EugeneGordin感谢这篇文章很好地解释了它,花了几个小时寻找它,但没有看到它。感谢你的回复,但这个方法不是静态的,它是一个实例方法。请看类实际上是
NSObject
的实例。看见