我非常需要幫助,在我的iPhone應用程序中發生內存泄漏。該應用程序已準備好提交到應用程序商店,是穩定的,在iPhone模擬器或叮噹中根本沒有任何內存泄漏......但似乎與我的iPod Touch上的它們充滿了矛盾。核心數據內存泄漏 - iPhone iOS4
當我嘗試從Core Data中檢索數據時,它們都來自managedObjectModel。
我的應用程序中的核心數據代碼是由Xcode自動創建的,我注意到代碼已經改變,當你得到xcode來生成它...我嘗試過新舊但是沒什麼區別。
如果我註釋掉下面的代碼,問題就會消失......無論如何可以看到它有什麼問題嗎?到目前爲止,我已經花了9個小時,只是想不出來!
NSString *entityForName = [[NSString alloc] initWithString:@"OfflineSettings"];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityForName inManagedObjectContext:[self managedObjectContext]];
[request setEntity:entity];
[entityForName release];
NSSortDescriptor *sortById = [[NSSortDescriptor alloc] initWithKey:@"Id" ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:sortById]];
[sortById release];
NSError *error;
NSMutableArray *mutableFetchResults = [[[self managedObjectContext] executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil) {
// Handle the error.
NSLog(@"Error fetching");
}
int intId = -1;
if ([mutableFetchResults count] == 0) {
TTDERROR(@"No id has been saved to offline settings");
} else {
OfflineSettings *offlineSettings = (OfflineSettings *)[mutableFetchResults objectAtIndex:0];
intId = [offlineSettings.Id intValue];
}
[mutableFetchResults release];
[request release];
泄漏具體似乎是在這條線:
NSMutableArray *mutableFetchResults = [[[self managedObjectContext] executeFetchRequest:request error:&error] mutableCopy];
..和[自managedObjectContext]的代碼是如在情況下,它可以幫助如下..
- (NSManagedObjectContext *)managedObjectContext {
if (managedObjectContext_ != nil) {
return managedObjectContext_;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
managedObjectContext_ = [[NSManagedObjectContext alloc] init];
[managedObjectContext_ setPersistentStoreCoordinator:coordinator];
}
return managedObjectContext_;
}
我真的很茫然,所以我會很感激一些幫助!
Steven
我不明白這條線是如何特別引起泄漏的,但你爲什麼做一個可變的副本?您根本不需要修改數組,只需訪問它,然後釋放它。另外,你如何檢測iPod上的泄漏,但不是在模擬器中? – bobDevil 2010-07-14 16:59:19
嘿, mutableCopy在我最初從它複製的示例代碼中。我已經嘗試過,並且擺脫了隨附的版本,但它沒有幫助。 我使用儀器檢測iPod上的泄漏。 謝謝, – 2010-07-14 17:13:13