我正在调试一个问题,该问题偶尔会导致我的应用程序崩溃并WebTryThreadLock
在崩溃报告中显示一条消息。看起来应用程序正在崩溃,因为NSUserDefaultsDidChangeNotification
正在后台线程上发送和接收。我在收到通知时进行 UI 更改,并了解强烈建议不要在后台线程上进行 UI 更改。
如果NSUserDefaultsDidChangeNotification
有时(如果不总是)在后台线程上发送,那么处理这个问题的最佳方法是什么?像下面这样的东西似乎过分但可能是必要的。
[[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
}