L'Instance a été libérée, tandis que la valeur de la clé, les observateurs étaient encore inscrits

J'ai une UITableView.

Ici, je me suis différent de la cellule. Chaque cellule dispose d'un modèle. Avec KVO et NotificationCenter la cellule écouter le modèle pour les changements. Quand je quitte le ViewController, j'obtiens cette erreur:

An instance 0x109564200 of class Model was deallocated while key value observers were still registered with it. 
Observation info was leaked, and may even become mistakenly attached to some other object. 
Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info:
<NSKeyValueObservationInfo 0x109429cc0> (
<NSKeyValueObservance 0x109429c50: Observer: 0x10942d1c0, Key path: name, Options: <New: NO, Old: NO, Prior: NO> Context: 0x0, Property: 0x10968fa00>
)

Dans la cellule-je faire lorsque le modèle de propriété est définie/modifié:

[_model addObserver:self
         forKeyPath:@"name"
            options:0
            context:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(modelIsInvalid:)
                                             name:@"modelIsInvalid"
                                           object:_model];

Puis dans la cellule dealloc:

- (void)dealloc
{
    NSLog(@"DEALLOC CELL");
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    [_model removeObserver:self forKeyPath:@"name"];
}

Dans le modèle que j'ai également de vérifier quand elle est désalloué:

- (void)dealloc
{
    NSLog(@"DEALLOC MODEL");
}

Toutes les cellules sont libérées avant de tous les modèles, mais toujours j'ai cette erreur. Aussi je ne suis pas sûr de savoir comment définir le point d'arrêt mentionné dans l'erreur.

OriginalL'auteur Johannes | 2014-07-31