Question

Dans mon application iPad, dans une classe I pour enregistrer une notification:

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
    [nc addObserver:self selector:@selector(selectedList:) name:@"TTSelectedList" object:nil];

Ma méthode selectedList: ressemble à ceci:

- (void)selectedList:(NSNotification*)notification
{
    NSLog(@"received notification");
}

Ensuite, dans une autre classe (un UITableViewController) Je posterai cette notification lorsqu'une ligne est sélectionnée:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"posting notification");
    [[NSNotificationCenter defaultCenter] postNotificationName:@"TTSelectedList" object:nil];
}

Je peux confirmer que la notification est affichée, parce que « notification d'affichage » est connecté à la console, mais « notification reçue » est jamais appelée, ce qui signifie que la notification ne reçoit pas et le sélecteur n'a pas été appelé. Je ne peux pas comprendre ce qui cause cela.

Merci

Était-ce utile?

La solution

La cause la plus probable est que vous n'êtes pas vraiment appeler addObserver:selector:name:object:. Vous ne disposez pas d'une ligne d'exploitation forestière là; êtes-vous sûr que le code est en cours d'exécution?

La deuxième cause la plus probable est que vous appelez removeObserver: avant la notification est affichée. Ceci est le plus souvent dans dealloc (qui devrait toujours appel removeObserver si vous avez jamais rien observé). L'erreur ici serait que votre objet d'observation a désallouée avant la notification.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top