Мне нужно проверить, существует ли в моей базе данных базовых данных объект, полученный из файла CSV с уникальным идентификатором, и этот код я считаю подходящим для этой задачи:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity;
entity =
[NSEntityDescription entityForName:@"ICD9"
inManagedObjectContext:passedContext];
[fetchRequest setEntity:entity];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"uniqueID like %@", uniqueIdentifier];
[fetchRequest setPredicate:pred];
NSError *err;
NSArray* icd9s = [passedContext executeFetchRequest:fetchRequest error:&err];
[fetchRequest release];
if ([icd9s count] > 0) {
for (int i = 0; i < [icd9s count]; i++) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
NSString *name = [[icd9s objectAtIndex:i] valueForKey:@"uniqueID"];
if ([name caseInsensitiveCompare:uniqueIdentifier] == NSOrderedSame && name != nil)
{
[pool release];
return [icd9s objectAtIndex:i];
}
[pool release];
}
}
return nil;
После более тщательного тестирования кажется, что этот код ответственен за огромную утечку в приложении, которое я пишу (он падает на 3GS, прежде чем сделать его 20% через 1459 пунктов). Я чувствую, что это не самый эффективный способ сделать это, какие-либо предложения для более эффективного использования памяти? Заранее спасибо!