Lorsque mon initialiseur personnalisé échoue, je suis censé renvoyer zéro. Quelle est la convention pour nettoyer toute la mémoire que j'ai allouée dans mon initialiseur, que je m'attendais à être nettoyé dans dealloc?Comment faire pour nettoyer la mémoire lorsque l'initialisation personnalisée échoue
Voici un exemple artificiel:
- (id)init
{
if ((self = [super init])) {
instanceVar1 = [[NSString alloc] initWithString:@"blah"];
if (bad_thing_oh_noes) {
return nil;
}
}
return self;
}
- (void)dealloc
{
[instanceVar1 release];
[super dealloc];
}
Une plus réaliste des circonstances où je ne peux pas vérifier efficacement toutes les conditions d'erreur avant que je ne les allocations seraient désérialisation un objet complexe contenant des tableaux et autres.
De toute façon, est-ce que je nettoie la mémoire allouée avant de renvoyer zéro, puis-je envoyer un message dealloc à moi-même avant de renvoyer nil, ou tout cela est-il géré par magie?
idiot moi, je pensais que je l'ai lu cette documentation, mais j'ai raté la partie qui a répondu à ma question! Merci d'avoir éclairci ça pour moi. :-) – Sandy
@Sandy vous êtes les bienvenus :) – albertamg