“Libérée, tandis que la valeur de la clé, les observateurs étaient encore enregistrés auprès d'elle.” les erreurs après la conversion à l'ARC

Je suis à l'aide de cette classe:

https://github.com/alexleutgoeb/ALPickerView

Depuis que je me suis converti à l'ARC, je reçois ce message d'erreur après avoir cliqué sur le pickerview une couple de fois:

2011-10-18 14:10:19.424 MappingApp[3398:10d03] An instance 0x73c7cd0 of class CustomTapGestureRecognizer 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 0x5d93430> (<NSKeyValueObservance 0x5d933f0: Observer: 0x5d66eb0, Key path: state, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x746b180>)

L'erreur de points à la CustomTapGestureRecoginizer classe et la dernière ligne de cette méthode:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesBegan:touches withEvent:event];
    //Simple hack, set recognizer state to possible as tap begins
    self.state = UIGestureRecognizerStatePossible;
}

Dans checkview, j'ai cette méthode:

- (void)didMoveToSuperview {
    gestureRec = [[CustomTapGestureRecognizer alloc] initWithTarget:nil action:nil];
    gestureRec.numberOfTapsRequired = 1;
    [gestureRec addObserver:self forKeyPath:@"state" options:NSKeyValueObservingOptionNew context:nil];
    [[self superview] addGestureRecognizer:gestureRec];
}

Et, le removeObserver, je sais que peut provoquer ce problème est en checkview de dealloc. Dois-je aller quelque part d'autre? Quelqu'un aurait d'autres idées de ce qui pourrait être à l'origine de ce problème? Il n'est jamais arrivé avant d'ARC.

OriginalL'auteur Aaron | 2011-10-18