+ (NSArray*) queryAllByEntityName:(NSString*) name AndSortColumn:(NSString*) ptyName{
//Define our entity to use
NSEntityDescription *entity = [NSEntityDescription entityForName:name inManagedObjectContext:managedObjectContext];
//Setup the Fetch Request
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
//Define How we will sort the result
if (ptyName != nil) {
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:ptyName ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
[request setSortDescriptors:sortDescriptors];
[sortDescriptor release];
}
//Fetch the record and Handle the error
NSError *error;
NSArray *FetchResults = [managedObjectContext executeFetchRequest:request error:&error];
[request release];
if (!FetchResults) {
//Handle the Error
}
//Save our fetched Data to a array
return [[FetchResults copy] autorelease];}
我曾經是一名java程序員,所以我仍然對內存管理不太熟悉。 我知道我必須返回一個autorelease對象,並且我做到了。 或者我的核心數據函數的問題不是NSCFString? THx for Answer!當我使用Intrument泄漏工具時,我得到了一個NSCFString對象泄漏,但我不知道哪裏出了問題
有一定的點泄漏點? – Flipper 2011-04-20 02:35:16
NSCFString在這段代碼中泄漏?無法找到任何.. – Krishnabhadra 2011-04-20 03:11:10
我不認爲這是你的泄漏的確切原因..但FYI你不需要通過複製和autoreleasing返回FetchResult .. executeFetchRequest確實返回一個autorelease對象..你只是返回它。 return FetchResults;當你收到返回的數組時 .. NSArray * returnedArray = [[YourClassName queryAllByEntityName:...] retain]; //現在用returnedArray做你的東西... [returnedArray release]; – Krishnabhadra 2011-04-20 03:20:17