Я отлаживаю проблему, которая иногда приводит к сбою моего приложения с сообщением WebTryThreadLock
в отчете о сбое. Похоже, что приложение падает, потому что NSUserDefaultsDidChangeNotification
отправляется и принимается в фоновом потоке. Я делаю изменения пользовательского интерфейса при получении уведомления и понимаю, что внесение изменений в пользовательский интерфейс в фоновом потоке настоятельно не рекомендуется.
Если 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
}