由于NSUserDefaultsDidChangeNotification,UI在后台线程上更改

|| 我正在调试一个问题,该问题有时会导致我的应用程序崩溃,并在崩溃报告中显示“ 0”消息。似乎应用崩溃了,因为正在后台线程上发送和接收ѭ1。我在收到通知时进行UI更改,并且强烈建议不要在后台线程上进行UI更改。 如果有时(如果不是总是)在后台线程上发送“ 1”,那么处理此问题的最佳方法是什么?类似于以下内容的内容似乎过分,但可能是必需的。
[[NSNotificationCenter defaultCenter] 
 addObserver:self
 selector:@selector(userDefaultsDidChange)
 name:NSUserDefaultsDidChangeNotification
 object:nil];

- (void)userDefaultsDidChange {
    [self performSelectorOnMainThread:@selector(updateUIWithNewUserDefaults)
                           withObject:nil
                        waitUntilDone:NO];
}

- (void)updateUIWithNewUserDefaults {
    // Update UI
}
    
已邀请:
您应该将消息发送到UI线程的调度队列,然后从那里进行UI修改。 像这样:
dispatch_async(dispatch_get_main_queue(), ^{
  // your code here
});
请参阅Apple的Grand Central Dispatch文档 -戴夫     

要回复问题请先登录注册