将内存分配给对象时出现内存泄漏问题

时间:2012-09-11 14:52:07

标签: iphone ios memory-leaks

我面临内存泄漏问题,代码非常简单。我有类'TestClass'

@interface TestClass : NSObject
  @property(nonatomic,retain) NSString *name;
@end

它的实现是这样的:

@implementation TestClass
@synthesize name;
-(id)init {
    if (self = [super init]) {
        self.name = @"";
    }
    return self;
}
-(void) dealloc
{
    [name release];
    name = nil;
}
@end

viewWillAppear中还有另一个视图控制器,我正在创建对象并立即释放,如下所示

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    for (int i =0; i<50; i++) {
        TestClass *testClass = [[TestClass alloc] init] ;
        [testClass release];

    }
}

泄漏工具显示行TestClass *testClass = [[TestClass alloc] init] ;上的内存泄漏,而如果我从TestClass中删除init和dealloc方法则没有内存。

提前致谢。

2 个答案:

答案 0 :(得分:3)

这是因为你没有在它自己的dealloc实现的dealloc中发布TestClass:

-(void) dealloc
{
    [name release], name = nil;
    [super dealloc];
}

另外作为提示,我建议从内存管理代码转移到ARC

答案 1 :(得分:0)

什么rckoenes是正确的,但你可以简单地说:

- (void)dealloc
{
    self.name = nil;
    [super dealloc];
}