Да, вы можете вызывать методы изнутри вашего dealloc
метода, хотя вы должны быть осторожны.Практически only методы, которые вы должны вызывать, должны быть "разрушающими" методами или методами, которые помогают в очистке объекта перед тем, как его ресурсы будут возвращены.Вот некоторые из этих методов очистки:
- отмена регистрации для уведомлений через центр уведомлений
- удаление себя в качестве наблюдателя значения ключа
- другие общие методы очистки
Обратите внимание, однако, что в каждом из этих методов ваш объект будет в несовместимом состоянии.Он может быть частично освобожден (некоторые ивы могут / будут недействительными), и поэтому вы не должны никогда полагаться на определенное состояние объекта.Эти методы должны только использоваться для продолжения деконструкции состояния объекта.
Это основная причина, почему мы не рекомендуем использовать установщики свойств (setFoo:
методы) в dealloc
: другоеобъект может быть зарегистрирован как наблюдатель, и использование свойства вызовет уведомление KVO, и если наблюдатель ожидает, что объект будет иметь действительное состояние, ему может не повезти, и все может взорваться очень быстро.
TL; DR:
Да, это безопасно, если вы умны.