Я довольно плохо знаком с Objective-C и не уверен, как правильно обращаться с управлением памятью в следующем сценарии:
У меня есть базовый объект данных с отношением «ко-многим» для ключа «дети». Чтобы получить доступ к дочерним элементам в виде массива, отсортированного по столбцу «положение», я написал класс модели следующим образом:
@interface AbstractItem : NSManagedObject
{
NSArray * arrangedChildren;
}
@property (nonatomic, retain) NSSet * children;
@property (nonatomic, retain) NSNumber * position;
@property (nonatomic, retain) NSArray * arrangedChildren;
@end
@implementation AbstractItem
@dynamic children;
@dynamic position;
@synthesize arrangedChildren;
- (NSArray*)arrangedChildren
{
NSArray* unarrangedChildren = [[self.children allObjects] retain];
NSSortDescriptor* sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"position" ascending:YES];
[arrangedChildren release];
arrangedChildren = [unarrangedChildren sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
[sortDescriptor release];
[unarrangedChildren release];
return [arrangedChildren retain];
}
@end
Я не уверен, сохранять или нет unarrangedChildren и возвращенные планируемые дети (первая и последняя строка метода аранжированных детей) Метод NSSet allObjects уже возвращает сохраненный массив? Возможно, уже слишком поздно, и у меня передозировка кофе.
Я был бы очень благодарен, если бы кто-то мог указать мне правильное направление. Я полагаю, что мне не хватает жизненно важных знаний в области управления памятью, и я обязательно тщательно их изучу.