iPhone NSCFString泄漏在下面的代碼:在fetchRequest
- (NSMutableArray *) fetchNotesForGroup: (NSString *)groupName {
// Variables declaration
NSMutableArray *result;
NSFetchRequest *fetchRequest;
NSEntityDescription *entity;
NSSortDescriptor *sortDescriptor;
NSPredicate *searchPredicate;
NSError *error = nil;
// Creates the fetchRequest and executes it
fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
entity = [NSEntityDescription entityForName:@"Note" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"noteName" ascending:YES] autorelease];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
[fetchRequest setReturnsDistinctResults:YES];
searchPredicate = [NSPredicate predicateWithFormat:@"categoryName like %@", groupName];
[fetchRequest setPredicate:searchPredicate];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:@"noteName"]];
result = [[managedObjectContext executeFetchRequest:fetchRequest error:&error] mutableCopy];
// Variables release
return result;
}
...我取了一個給定的類別名稱註釋。當我運行Instruments時,它說NSCFString正在泄漏。
我知道泄漏對於iPhone開發者來說意味着什麼......但我對如何插入這個漏洞並不知情。
任何線索?歡迎所有幫助。
非常感謝!
感謝您的答案。我試圖釋放自己的(而不是autorelease),並沒有解決。 我使用它釋放了另一個函數的數組,並且泄漏仍然存在... 猜猜我必須嘗試其他一些...不知道是什麼。 – camilo 2010-04-20 19:11:24
嘿,我什至沒有看到可變的副本。猜猜這會教我滾動一路。無論如何,你不應該在這裏複製,而應該在你發送數組的對象中。 – TechZen 2010-04-20 21:55:16
我不認爲Instruments從絕對意義上追蹤泄漏,而是尋找持續超出其預期範圍的對象。如果您沒有遵循管理保留的標準方法,那麼您可能會發現樂器在被創建它們的範圍消失之後仍然存在的對象混淆。 – TechZen 2010-04-20 21:57:30