- Quel est le comportement normal dans Objective-C si vous appelez une méthode sur un objet (pointeur) qui est nul (peut-être parce que quelqu'un a oublié de l'initialiser)? Ne devrait-il pas générer une sorte d'erreur (faute de segmentation, exception de pointeur nul ...)?
- Si c'est un comportement normal, existe-t-il un moyen de changer ce comportement (en configurant le compilateur) afin que le programme soulève une sorte d'erreur/exception lors de l'exécution?
Pour clarifier ce dont je parle, voici un exemple.Appeler une méthode sur un objet non initialisé (pointeur nul)
Ayant cette classe:
@interface Person : NSObject {
NSString *name;
}
@property (nonatomic, retain) NSString *name;
- (void)sayHi;
@end
cette mise en œuvre:
@implementation Person
@synthesize name;
- (void)dealloc {
[name release];
[super dealloc];
}
- (void)sayHi {
NSLog(@"Hello");
NSLog(@"My name is %@.", name);
}
@end
Quelque part dans le programme que je fais:
Person *person = nil;
//person = [[Person alloc] init]; // let's say I comment this line
person.name = @"Mike"; // shouldn't I get an error here?
[person sayHi]; // and here
[person release]; // and here
Et je ne suis pas au courant d'aucune façon de changer ce comportement. C'est un élément fondamental de la programmation avec Objective-C/Cocoa. Vous apprendrez à l'aimer. –
Lien vers le document dans la réponse est mort (* Page introuvable *). – Pang