2011-05-30 73 views
-1


在我的计划,而在mapArray1 加入PLACE1我已经发布了mapArray1dealloc方法内存泄漏和添加对象。那么也泄漏我要释放的地方mapArray1泄漏而在for循环

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]; 
} 
+0

我觉得这个'[PLACE1复制]'泄漏。 – 2011-05-30 06:48:08

回答

2

泄漏来自[place1 copy]。将其替换为[[place1 copy] autorelease]或使用临时变量,并在将其添加到mapArray1后释放它。

the docs

如果使用名称以“黄金”的方法创建你需要一个对象的所有权,“新”,“复制”,或“mutableCopy”(例如,alloc,newObject或mutableCopy),或者如果您发送一个保留消息。

而且,我怀疑你需要重新创建这些自动释放民意调查在每个周期...