2010-01-07 5 views
3

Donc je surcharge la méthode dealloc parce que l'objet est un objet composite composé d'un autre objet.une différence entre ces deux méthodes dealloc?

J'avais initialement cette méthode dealloc:

-(id) dealloc; // Override to release the Rectangle object’s memory 
{ 
    [rect release]; 
    [super dealloc]; 
    return self; 
} 

Après avoir regardé dans le livre que j'ai vu une autre réponse:

{ 
    [rect release]; 
    return [super dealloc]; 
} 

me demandais si les deux fonctionnent aussi.

Merci,

Nick

+0

maintenant que je réellement couru le programme avec la méthode de l'échelle, il me dit que je ne suis pas ignorant la valeur vide de la dernière ligne que je devrais être. – nickthedude

Répondre

10

Ils sont tous les deux tort. dealloc retours void, pas id:

- (void) dealloc { 
    [rect release]; 
    [super dealloc]; 
} 
0

Je viens de vérifier le NSObject reference: dealloc n'a pas de retour de type. Donc, je pense qu'il est incorrect de définir une telle signature. Ainsi, appeler au dealloc ne devrait pas s'attendre à une valeur de retour.

Sauf si vous n'êtes pas ... NSObject

sous-classement
+1

Même si vous sous-classez NSObject, -dealloc ne doit absolument pas renvoyer de valeur (Objective-C ne prenant pas en charge les types co-variant). – bbum