iPhone - synthétiser et utiliser des ivar depuis l'extérieur de la classe?
-
28-10-2019 - |
Question
J'ai lu beaucoup de choses sur l'appel @SyntheSize. À propos de son utilisation, ...
J'ai donc fait un test, et son résultat me donne une sensation étrange. Laisse-moi expliquer...
Permet d'écrire dans un objet .h
@interface AnObject : NSObject {
NSString* aaTest;
}
@property(nonatomic, retain) NSString* bbTest;
-(void)log;
Puis dans son .m
@synthesize bbTest = aaTest;
-(void)log {
NSLog(@"Inside var : %@", aaTest);
NSLog(@"Inside property : %@", self.bbTest);
}
Dans une autre .m, écrivons:
#import "AnObject.h"
puis dans une méthode:
AnObject* testCtrl = [[AnObject alloc] init];
testCtrl.bbTest = @"Some string";
NSLog(@"Outside property : %@", testCtrl.bbTest);
[testCtrl log];
Nous sommes OK qu'ici, y compris uniquement le .h, l'appel synthétisé n'est pas connu de l'autre objet. En regardant le journal, il donne:
Outside property : Some string
Inside var : Some string
Inside property : Some string
Alors ... n'est-ce pas étrange?
La solution
Dans votre appel synthétisé, vous affectez BBTest à AATEST (notez le capital t). Ce n'est pas la même chose qu'Aatest
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow