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