【发布时间】:2011-12-17 12:04:28
【问题描述】:
最近两天我一直在寻找内存泄漏。我已经阅读了文档并在互联网上搜索了很好的信息(例如 Owen Goss “Finding and Fixing Memory Leaks in iOS Apps”),但我仍然有太多的谜团需要解开。
例如,这段代码在 Instruments 中一次又一次地亮起。我尽力了,但无法解决。
- (void) updateUserDefaults
{
// alloc temporary Array for object´s positions
NSMutableArray *tArray = [[NSMutableArray alloc] init];
// store locations of objects
for (int i=0; i<[originalOrigins count]; ++i) {
CGPoint foo = [self.view viewWithTag:100+i].center;
NSString *moo = NSStringFromCGPoint(foo);
[tArray addObject:moo];
[moo release]; //?
}
// retrieve all stored positions for all objects
NSMutableArray *zettelPannedOrigins = [[[[NSUserDefaults standardUserDefaults] objectForKey:@"zettelPannedOrigins"] mutableCopy] retain];
// replace with objects from this level
[zettelPannedOrigins replaceObjectAtIndex:zettelAtIndexInTonebank withObject:tArray];
// save
[[NSUserDefaults standardUserDefaults] setObject:zettelPannedOrigins forKey:@"zettelPannedOrigins"];
[[NSUserDefaults standardUserDefaults] synchronize];
// clean up memory
[tArray release];
[zettelPannedOrigins release]; //?
}
我认为对其他人来说可能也很有趣的是,我释放了我分配的东西。但它仍然在泄漏。我无法用文档回答这个问题。或者我可以吗?
【问题讨论】:
-
不要在循环中释放“moo”——你不拥有那个引用。
标签: ios xcode memory-leaks