2010-10-29 69 views
0

請幫助我,這段代碼是否正確?我的意思是,我們是否真的需要這個類中的dealloc方法,爲什麼我們或者不是?如果我們不在這裏使用dealloc,會是內存泄漏嗎? Thanx!帶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

出於好奇,這是爲了什麼? – outis 2010-10-29 09:38:16

+0

我只是一個新的在這方面,我的魔杖到現在誰站在所有這些記憶的東西后面)) – yozhik 2010-10-29 10:28:10

回答

3

該代碼是正確的,是的,如果你沒有dealloc會有內存泄漏。

如果您設置姓氏或電子郵件,則保留該字符串。然後,MyData實例可以被釋放,並且不需要dealloc姓氏,或者電子郵件字符串仍然處於懸停狀態,但是現在您無法引用它 - 泄漏。

0

請再次指定您的問題。您是否只聲明對象?如果你這樣做,你不需要解除它們。如果你要在類的任何部分聲明和分配它們的內存,你將需要dealloc方法來釋放內存。

所以要小心內存管理,因爲如果你不釋放它們,並且你要釋放或釋放任何對象而沒有分配內存,它會提供內存泄漏,這會給你的應用程序崩潰。

+0

是的,我爲一個對象分配內存。 – yozhik 2010-10-29 10:35:25

+0

然後你應該使用dealloc方法來釋放被對象佔用的內存。防止內存泄漏會很有幫助。你的代碼在正確的方向。 – 2010-10-29 11:25:38