Вы никогда не отправляете сообщение dealloc напрямую.Вместо этого метод dealloc объекта вызывается косвенным образом через метод протокола NSObject выпуска (если сообщение освобождения приводит к тому, что счетчик сохранения получателя становится равным 0).См. Руководство по программированию для управления памятью для получения более подробной информации об использовании этих методов.
Подклассы должны реализовывать свои собственные версии dealloc, чтобы разрешить освобождение любой дополнительной памяти, используемой объектом, например, динамически выделяемое хранилище для данных илиПеременные экземпляра объекта, принадлежащие освобожденному объекту.После выполнения освобождения конкретного класса метод подкласса должен включать версии dealloc суперкласса через сообщение super:
Внимание: обратите внимание, что при завершении приложения объекты не могут отправлять сообщение dealloc, так как память процессаавтоматически очищается при выходе - более эффективно просто позволить операционной системе очищать ресурсы, чем вызывать все методы управления памятью.По этой и другим причинам вам не следует управлять дефицитными ресурсами в dealloc
- (void)release
{
_retainCount--;
if (_retainCount == 0) {
[self dealloc];
}
}