在for循环中添加对象时泄漏

问题描述

|         在我的程序中,在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)创建对象,或者发送该对象,则您拥有该对象的所有权保留消息。 另外,我怀疑您是否需要在每个周期中重新创建这些自动发布调查...     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...