为什么我这里有内存泄漏:
·H:
@property (nonatomic, retain) NSDictionary *info;
然后在我的.m:
@synthesize info = _info;
我在这里有一个泄漏:
- (id)initWithData:(NSDictionary *)data
{
self = [super init];
if (self) {
self.info = [[NSDictionary alloc] initWithDictionary:data];
}
return self;
}
另一个泄漏:
-(void)dealloc {
[self.info release];
[super dealloc];
}
答案 0 :(得分:3)
您的泄漏源于您的财产声明及其分配方式,当您使用setter将属性声明为“retain”时,将为您保留var,这样做
self.info = [[NSDictionary alloc] initWithDictionary:data];
保留var,并且由于alloc还保留了var,你得到+2保留计数,你应该自动释放对象或像
一样分配它。 _info = [[NSDictionary alloc] initWithDictionary:data];
当您释放属性时也可以将其设置为nil
self.info=nil
答案 1 :(得分:1)
您的构造函数应该使用
self.info = [NSDictionary dictionaryWithDictionary:data];
你的dealloc应简化为
- (void)dealloc {
self.info = nil;
[super dealloc];
}