0

我面临着非常简单的代码的内存泄漏问题。我有类'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 方法,则没有内存。

提前致谢。

4

2 回答 2

3

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

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

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

于 2012-09-11T14:54:10.970 回答
0

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

- (void)dealloc
{
    self.name = nil;
    [super dealloc];
}
于 2012-09-11T14:56:26.897 回答