Override @le setter de la propriété et de la boucle infinie

Il est de Classe A avec:

@interface ClassA : NSObject {
}
@property (nonatomic, assign) id prop1;
@end

@implementation
@synthesize prop1;
@end

puis j'ai sous-classe

@interface ClassB : ClassA {
}
@end

@implementation

- (id)init {
    self = [super init];
    if (self) {
    }
    return self;
}

//This is infinite loop
- (void) setProp1:(id)aProp
{
    self.prop1 = aProp;
}
@end

et c'est une boucle infinie, car setProp1 de ClassB appels [ClassB setProp1:val] de l'intérieur ClassB.

J'ai déjà essayé d'appeler [super setProp1] mais ce

Comment faire pour remplacer @biens et d'attribuer de la valeur à l'intérieur écrasé setter ? Et supposons que je ne peux pas modifier ClassA.

  • “J'ai déjà essayé d'appeler [super setProp1] mais ce”...? Quel était le problème? super est correct ici.
  • super le changement de la valeur en super seulement. auto.prop1 est nul et super.prop1 ont de la valeur. l'auto->prop1 faire l'affaire (comme Sherm proposer)
  • auto.prop1 et super.prop1 ne doit certainement pas être le retour des valeurs différentes. Êtes-vous en surchargeant la méthode de lecture trop?
  • oui je fais et il est de retour "aProp" à partir de ce setter.
  • Ne devrait pas l'implémentation de la superclasse de la lecture le faire déjà?
InformationsquelleAutor Marcin | 2011-06-19