Что касается вашего конкретного вопроса: да, это правильно. Массив сохраняет любой добавленный к нему объект, а экземпляр Company
должен сохранять объект Id
. (Кроме того, свойство должно называться id
, а не Id
, чтобы следовать соглашениям Какао.) Это предполагает, что вы сохраняете значение в методе initWithId:
(используя self.Id
или [Id retain]
).
Я не вижу ничего плохого в вашем коде. Я думаю, что ошибка должна быть из-за того, что вы делаете между добавлением объекта Company
в массив и попыткой доступа к нему снова. Вы говорите, что ошибка возникает после добавления строки [self.Id release];
в dealloc
? Это также было бы очень странно.
Звучит так, будто вы перевыпустили объект Company
или сам массив был освобожден. Не могли бы вы создать небольшой пример кода, который приводит к ошибке (вместо того, чтобы просто сказать «позже я это сделаю и ...»)?
Более общий ответ заключается в том, что вы не должны думать о том, каким может быть точное количество сохранений. Счет сохранения часто будет выше, чем вы ожидали из-за внутренней работы Какао. Вы должны следить только за тем, какие классы берут на себя ответственность за объект (например, NSArray
и NSMutableArray
), и в каких ситуациях ваш собственный код не должен / не должен вступать во владение объектом. Поэтому, когда вы спрашиваете, является ли количество сохраняемых единиц 1, это немного не относится к делу. Вопрос заключается в том, имеет ли какой-либо объект право собственности на данный объект.