我说的是这个方法:
https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623117-application?language=objc
在多线程应用程序中,始终会传递通知 发布通知的线程,可能不是 观察者注册的同一个线程。
我想要实现的是,如果app位于前台(重新加载数据),请更新我的UITableView。
所以我想知道上面的方法是否有可能在后台线程上调用,或者我可以安全地使用
之类的东西if ([NSThread isMainThread]) {
// do the UI stuff as normal
} else {
dispatch_async(dispatch_get_main_queue(), ^{ /* post notification */ });
}
并通过调用以下方法发布通知:
- (void) helperMethod{
if([UIApplication sharedApplication].applicationState != UIApplicationStateBackground){
[[NSNotificationCenter defaultCenter] postNotificationName:@"SOMENAME" object:self];
}
}
而不是使用这样的东西:
[self performSelectorOnMainThread:@selector(myMethod:) withObject:Nil waitUntilDone:NO];
此外,我正在viewDidLoad
方法中注册观察员(并在viewWillDissapear
方法中删除它们。)