У меня возникли проблемы с изменением представления внутри потока. Я попытался добавить подвид, но для отображения потребовалось около 6 или более секунд. Наконец-то он заработал, но не знаю, как именно. Поэтому мне было интересно, почему это сработало и в чем разница между следующими методами:
//this worked -added the view instantly
dispatch_async(dispatch_get_main_queue(), ^{
//some UI methods ej
[view addSubview: otherView];
}
//this took around 6 or more seconds to display
[viewController performSelectorOnMainThread:@selector(methodThatAddsSubview:) withObject:otherView
waitUntilDone:NO];
//Also didnt work: NSNotification methods - took also around 6 seconds to display
//the observer was in the viewController I wanted to modify
//paired to a method to add a subview.
[[NSNotificationCenter defaultCenter] postNotificationName:
@"notification-identifier" object:object];
Для справки, это было вызвано внутри этого Completetion Handler класса ACAccountStore.
accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
if(granted) {
//my methods were here
}
}
Изменить: когда я сказал, что это не сработало, я имел в виду, что для отображения добавленного мной представления потребовалось около 6 секунд.