J'ai une classe d'objets de données :
@interface Item: NSObject {
NSString *title;
NSString *text;
}
@property (copy) NSString *title;
@property (copy) NSString *text;
@end
@implementation Item
@synthesize text;
- (void)updateText {
self.text=@"new text";
}
- (NSString *)title {
return title;
}
- (void)setTitle:(NSString *)aString {
[title release];
title = [aString copy];
}
@end
Je peux régler le title
en utilisant des méthodes non synthétisées, mais lorsque je configure une propriété avec des accesseurs synthétisés, j'obtiens une erreur dans la fenêtre de l'utilisateur. updateText
sur la ligne qui se lit :
self.text=@"new text";
L'erreur est :
*** NSInvocation: warning: object 0x462d2c0 of class '_NSZombie_CFString' does not implement methodSignatureForSelector: -- trouble ahead
*** NSInvocation: warning: object 0x462d2c0 of class '_NSZombie_CFString' does not implement doesNotRecognizeSelector: -- abort
Pourquoi les accesseurs identiques non synthétisés fonctionnent-ils alors que les accesseurs synthétisés ne fonctionnent pas ?
L'objet est créé dans le thread principal et une erreur apparaît lorsqu'on y accède depuis le thread NSOperation.