2010-10-29 3 views
0

Aidez-moi s'il vous plaît, ce code est-il correct? Je veux dire, avons-nous vraiment besoin d'une méthode dealloc dans cette classe, et pourquoi le faisons-nous ou non? Sera une fuite de mémoire si nous n'utilisons pas de dealloc ici? Merci!Fuite de mémoire dans un petit code avec dealloc

#import <Foundation/Foundation.h> 


@interface MyData : NSObject 
{ 
    @private 
    NSString *name; 
    NSString *surname; 
    NSString *email; 
    NSString *telephone; 
    UIImage *image; 
} 

@property (nonatomic, retain) NSString *name; 
@property (nonatomic, retain) NSString *surname; 
@property (nonatomic, retain) NSString *email; 
@property (nonatomic, retain) NSString *telephone; 
@property (nonatomic, retain) UIImage *image; 
@end 

#import "MyData.h" 


@implementation MyData 

@synthesize name; 
@synthesize surname; 
@synthesize email; 
@synthesize telephone; 
@synthesize image; 

- (void) dealloc 
{ 
    [name release]; 
    [surname release]; 
    [email release]; 
    [telephone release]; 
    [image release];  

    [super dealloc];  
} 
@end 
+0

Par curiosité, à quoi cela sert-il? – outis

+0

Je viens d'un nouveau dans ce domaine et je vais maintenant qui se tient derrière tout ce matériel de mémoire)) – yozhik

Répondre

3

Le code est correct, oui il y aurait une fuite de mémoire si vous n'aviez pas le dealloc.

Si vous définissez un nom de famille ou un e-mail, la chaîne est conservée. L'instance de MyData pourrait alors être libérée et sans le dealloc le nom de famille, ou la chaîne d'email serait toujours en train de traîner mais maintenant vous n'avez aucun moyen de le référencer - une fuite.

0

Veuillez redéfinir votre question.Voulez-vous seulement déclarer les objets? Si vous faites cela, vous n'avez pas besoin de les libérer. Si vous allez les déclarer et leur attribuer de la mémoire dans n'importe quelle partie de la classe, vous aurez besoin de la méthode dealloc pour libérer de la mémoire. Alors faites attention à la gestion de la mémoire, car elle fournit des fuites de mémoire si vous ne les libérez pas et si vous allez décharger ou libérer un objet sans allouer de mémoire, cela va provoquer un plantage de l'application.

+0

oui, j'alloue de la mémoire pour un objet. – yozhik

+0

Ensuite, vous devez utiliser la méthode dealloc pour libérer la mémoire occupée par les objets. Il sera utile d'éviter les fuites de mémoire. Vous êtes dans la bonne direction dans votre code. –