我不明白泄漏在哪里。
我正在查询数据库中的字段。在此之后,我插入一个NSMutableArray列表。
@property (nonatomic, retain) NSMutableArray *bList;
@property (nonatomic, retain) NSString *icon;//Model
Model *newModel = [[Model alloc] init];
newModel.icon = [NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement, 2)];
[self.bList addObject:newModel];
[newModel release];
最后:
- (void)dealloc {
[self.bList release];
[super dealloc];
}
答案 0 :(得分:4)
[self.bList release];
不要那样做;使用self.bList = nil;
或[bList release], bList = nil;
该代码似乎没有泄漏,除非我遗漏了一些明显的东西。
请记住,leaks
标识泄漏的分配位置,而不是泄漏的位置。泄漏可能是由于其他地方过度保留造成的。
答案 1 :(得分:1)
根据您对@murat
的回答的评论,如果您正在做,
self.blist = [[NSMutableArray alloc] init];
然后你正在泄漏记忆,因为你在该行中获得了两次所有权。一个由alloc-init
和一个基于属性(假设它是retain
ed,大多数应该是)。在这种情况下,在dealloc
中释放一次将无法平衡retain-release
次来电。你不得不宁可做,
self.blist = [NSMutableArray array];
或
self.blist = [NSMutableArray arrayWithCapacity:100];
答案 2 :(得分:-2)
您创建了一个数组实例,但没有占用内存空间。对于blist数组,请分配一个内存空间。
self.blist= [[NSMutableArray alloc]init]; // or you can create like
self.blist= [[NSMutableArray alloc]initWithCapacity:100];