Это зависит от того, как вы его назначаете.Если ваше задание относится непосредственно к ивару, как
myProperty = [[NSMutableArray alloc] init];
, то достаточно одного выпуска в dealloc, потому что у вас есть ожидаемое количество подсчетов 1 из alloc.
С другой стороны, если вы использовали синтезированный сеттер через:
[self setMyProperty:[[NSMutableArray alloc] init]];
или
self.myProperty = [[NSMutableArray alloc] init];
, то вы почти наверняка вытекли из объекта.Вы увеличили счет сохранения дважды (один раз с помощью alloc
и один раз в установщике) и уменьшили его только один раз (в dealloc
).
Лучшим ИМО является использование установщика и пула автоматического выпуска:
self.myProperty = [[[NSMutableArray alloc] init] autorelease];
Здесь alloc
сбалансирован с локальным автоматическим выпуском, а сохранение сеттера сбалансировано с выпуском dealloc.
Хотя этот подход включает в себя два дополнительных метода (метод setter и вызов autorelease), он гарантирует, что любые сохраненные значения, которые ранее были установлены в свойстве, были release
d по мере необходимости (в методе setter),