2011-05-30 82 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),或者如果您發送一個保留消息。

而且,我懷疑你需要重新創建這些自動釋放民意調查在每個週期...