使用dealloc的小代码中的内存泄漏

时间:2010-10-29 09:32:30

标签: objective-c ios4 release dealloc

请帮助我,这段代码是否正确?我的意思是,我们真的需要这个类中的dealloc方法,为什么我们不喜欢?如果我们不在这里使用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

2 个答案:

答案 0 :(得分:3)

代码是正确的,是的,如果你没有dealloc就会出现内存泄漏。

如果设置姓氏或电子邮件,则会保留字符串。然后可以免费获取MyData实例,并且没有dealloc的姓氏,或者电子邮件字符串仍然会挂起,但现在你无法引用它 - 泄漏。

答案 1 :(得分:0)

请再次指明您的问题。您只是要声明对象吗?如果你这样做你不需要解除它们。如果你要在类的任何部分声明并分配它们,你将需要dealloc方法来释放内存。

所以要小心内存管理,因为如果你没有释放内存,它会提供内存泄漏,如果你要释放或释放任何对象而不分配内存,它会给你的应用程序崩溃。