我面临内存泄漏问题,代码非常简单。我有类'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方法则没有内存。
提前致谢。
答案 0 :(得分:3)
这是因为你没有在它自己的dealloc实现的dealloc中发布TestClass:
-(void) dealloc
{
[name release], name = nil;
[super dealloc];
}
另外作为提示,我建议从内存管理代码转移到ARC
。
答案 1 :(得分:0)
什么rckoenes是正确的,但你可以简单地说:
- (void)dealloc
{
self.name = nil;
[super dealloc];
}