Я искал последние пару часов, читая десятки сообщений по теме управления памятью в объективе C, и я просто не понимаю. Сожалею. Я делаю все что в моих силах!Метод, возвращающий объект с executeFetchRequest
В настоящее время я ищу ответ на вопрос о том, как вернуть объект из метода, который вызывает «executeFetchRequest».
Вот код ...
+ (Player *)loadPlayerWithPredicate:(NSString *)name:(NSInteger)index
{
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Player" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
// Set filter predicate
NSString *strFilter = [NSString stringWithFormat:@"%@ = %d", name, index];
[request setPredicate:[NSPredicate predicateWithFormat:strFilter]];
// Create the sort descriptors array
NSSortDescriptor *sorter = [NSSortDescriptor sortDescriptorWithKey:name ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:sorter]];
NSError *error = nil;
Player *player = nil;
NSArray *array = [managedObjectContext executeFetchRequest:request error:&error];
if ([array count] == 1)
{
player = [array objectAtIndex:0];
//[player retain]; // ???
}
[request release];
return player;
}
Но что мне действительно нужно для «игрока» объекта прилипать вокруг после возвращения метода.
Как я могу сделать «плеер» вживую после его возвращения?
Должен ли я называть «сохранить»? (а затем я бы назвал «release» в приемнике) Должен ли я «копировать» объект?
Я прочитал все другие сообщения о Alloc, копировать, новый и т.д.
мне просто нужен простой пример, чтобы я мог тогда получить понимание от него. Если вы также можете показать мне пример получателя, вызывающего этот метод, я был бы признателен.
Спасибо!