В программе реализации есть функция, называемая dealloc. Разве эта функция вызывается приложением только один раз?
Да.-dealloc
уничтожает объект.Попытка отправить ему любое сообщение снова, включая -dealloc
, является ошибкой.
Если я выделю объект и сохраню его 2 раза, то счетчик удержаний будет 2
Осторожный.Число сохраняемых данных равно , по крайней мере, 3. Объект может быть иным, чем ваш код.Лучше не беспокоиться о сохранении счета и думать только с точки зрения владения.
Каждое выделение, новое, копирование или сохранение является требованием владения.Метод dealloc объекта будет вызываться только тогда, когда все заявки на владение будут отменены.Заявление о праве собственности прекращается путем отправки -release
.Поэтому, если вы никогда не освободите объект, кроме как в его собственной разметке, вы никогда не освободите его.