Ios 在后台线程中运行NSTimer,在主线程中完成时调用方法
我有一个静态方法,创建一个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
+ (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
的实例。看见