是否始终在主线程上调用didReceiveRemoteNotification方法?

时间:2017-01-23 13:25:15

标签: ios objective-c multithreading push-notification

我说的是这个方法:

https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623117-application?language=objc

还有statement from docs说:

  

在多线程应用程序中,始终会传递通知   发布通知的线程,可能不是   观察者注册的同一个线程。

我想要实现的是,如果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方法中删除它们。)

0 个答案:

没有答案