В получателе для одного из моих сохраненных свойств я выделяю и присваиваю NSArray для моего объекта модели («модели»). Затем я сортирую этот NSArray, используя метод "sortedArrayUsingSelector:". Согласно документам, это возвращает автоматически выпущенный NSArray обратно. Затем я переназначаю это моему массиву "models".
Сначала я никогда не сохранял этот отсортированный массив с автоматическим выпуском и обнаружил, что, когда я выталкивал этот viewController из стека, мое приложение зависало, говоря, что я пытался уменьшить счетчик ссылок на освобожденный объект или что-то в этом роде. Затем я добавил сохранение, как вы можете видеть в коде ниже, и все в порядке.
У меня такой вопрос: правильно ли, что мне нужно сохранять автоматически выпущенный объект, даже если я сохраняю это свойство в его объявлении и освобождаю его в моем dealloc?
- (NSArray *)models {
if (!models) {
models = [[NSArray alloc] initWithArray:[self.modelDictionary allKeys]];
models = [[models sortedArrayUsingSelector:@selector(compare:)] retain];
}
return models;
}