Les événements publiés par NSNotificationCenter postNotificationName sont-ils traités avant la mise à jour des événements de l'interface utilisateur?Les notifications NSNotificationCenter ont-elles une priorité plus élevée que les événements de chargement de cellules UITableView?
J'ai besoin de savoir car sinon mon programme actuel va se bloquer dans certains cas rares.
Code du modèle:
- (void)searchFinishedWithResults:(Results *)results {
self.results = results;
// If some table cells are loaded NOW, before notication is processed, we might crash!
[[NSNotificationCenter defaultCenter]
postNotificationName:SearchResultArrived object:nil];
}
Lors du traitement du Notifications par, je vais courir UITableView reloadData. Toutefois, examinez si, avant de traiter la notification, l'interface utilisateur doit être mise à jour. Dans ce cas -tableView: cellForRowAtIndexPath: indexPath sera appelé, mais l'objet de résultats a changé, il récupérera les anciennes données.
Je ne pense pas que ce soit le cas ici. Si vous regardez le code ci-dessus, c'est un exemple parfait de NSNotificationCenter - l'OP avertit simplement les observateurs que les résultats de recherche sont arrivés et basé sur cette notification, il pourrait exécuter des choses légitimes comme animer dans une vue Résultat de recherche, ou automatiquement ignorer un vue "chargement modal" etc. Le code ne montre pas la mauvaise pratique de résultats ne pas être gérés correctement autrement. – strange