2013-03-07 1 views
3

J'essaie d'ajouter une propriété à une classe en utilisant une catégorie. Les accesseurs de propriété ressemblent à:KVO ne fonctionne pas pour les catégories

- (NSArray *)thumbnails { 
    return objc_getAssociatedObject(self, kThumbnails); 
} 

- (void)setThumbnails:(NSArray *)thumbnails { 
    [self willChangeValueForKey:@keypath(self.thumbnails)]; 
    objc_setAssociatedObject(self, kThumbnails, thumbnails, OBJC_ASSOCIATION_RETAIN); 
    [self didChangeValueForKey:@keypath(self.thumbnails)]; 
} 

Malheureusement, aucune notification est déclenchée. Est-il même possible d'ajouter des propriétés conformes KVO aux catégories?

+0

Affiche le code qui enregistre l'observateur et qui gère la notification. –

+0

Ce code où l'observateur était enregistré était le problème. Il a été enregistré après la notification avait déjà été renvoyé. – zlajo

Répondre

4

KVO est certainement possible avec des méthodes d'accès dans les catégories.

Le code affiché est conforme à la norme KVO pour la clé @"thumbnails". Vous ne devriez même pas avoir à envoyer les messages willChangeValueForKey: et didChangeValueForKey:.

Questions connexes