问题描述
|
在我的程序中,在mapArray1中添加place1时内存泄漏
我以
dealloc
方法释放了mapArray1
。然后在我必须释放ѭ0的地方泄漏了?
place1 = [[NSMutableDictionary alloc] init];
for(i=0;i<[array count];i++)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[place1 setObject:@\"1\" forKey:@\"ID\"];
lati=[array1 objectAtIndex:i];
[place1 setObject:lati forKey:@\"latitude\"];
long i = [array2 objectAtIndex:i];
[place1 setObject:longi forKey:@\"longitude\"];
[mapArray1 addObject:[place1 copy]];
[pool release];
}
解决方法
泄漏来自
[place1 copy]
。将其添加到mapArray1后,可以用ѭ5替换它,也可以使用一个临时变量并释放它。
从文档:
如果使用名称以“ alloc”,“ new”,“ copy”或“ mutableCopy”开头的方法(例如alloc,newObject或mutableCopy)创建对象,或者发送该对象,则您拥有该对象的所有权保留消息。
另外,我怀疑您是否需要在每个周期中重新创建这些自动发布调查...