Мой объект имеет частные элементы NSmutableArray. Я использую следующий код для сортировки объектов в элементах по размеру:
-(void)sortItems{
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"size" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray = [items sortedArrayUsingDescriptors:sortDescriptors];
NSMutableArray* newArray = [[NSMutableArray alloc] initWithArray: sortedArray];
[self setItems:newArray];
[sortDescriptor release];
}
Очевидно, это утечка памяти, потому что каждый раз, когда я вызываю sortItems, я выделяю новую память и назначаю элементы, указывающие на нее. Я попытался освободить старую память следующим образом:
NSMutableArray* newArray = [[NSMutableArray alloc] initWithArray: sortedArray];
NSMutableArray* oldArray = [self items];
[self setItems:newArray];
[oldArray release];
Но это дает ошибку EXC_BAD_ACCESS. Я читал об обработке памяти в objC и убежден, что делаю здесь что-то принципиально неправильное.
Любая помощь будет принята с благодарностью!
setItems
. Это должно сохранятьnewArray
, что означает, что вам нужно[newArray release]
сразу после его вызова. - person trojanfoe   schedule 21.02.2012