Предположим, что у меня есть 2 класса, классы A и B. По составу класс A имеет экземпляр класса B. Иными словами, класс A является тем, который создает экземпляр класса B.Какой метод dealloc вызывается первым?
Если я ' m в окончательном выпуске моего объекта, который является своего рода классом A, будет ли сначала выполняться метод dealloc класса B? Это всегда так? Будет ли случай, когда dealloc класса A будет выполнен до класса B?
Я пытаюсь понять порядок, в котором будет выполняться метод dealloc классов.
(Это в АРК)
И детали gory здесь: http: // clang.llvm.org/docs/AutomaticReferenceCounting.html#dealloc. В частности: «Переменные экземпляра для класса, скомпилированного ARC, будут уничтожены в какой-то момент после того, как управление войдет в метод dealloc для корневого класса класса». –
oh. поэтому A будет вызываться первым, но B будет освобожден до A. как насчет кода внутри функций dealloc? Так как метод dealloc A вызывается первым, означает ли это, что код внутри dealloc A будет выполнен до B? Ох. Я просто хочу глубоко понять dealloc. большое спасибо за ответ. – cessmestreet
* «B будет освобожден до завершения метода dealloc A» *, возможно, немного вводит в заблуждение. B будет освобожден до завершения операции освобождения A. Но если оба A и B предоставляют метод 'dealloc', сначала будет вызываться метод A. По крайней мере, так я понимаю: «Класс может предоставить определение метода для метода экземпляра с именем dealloc. Этот метод будет вызываться после окончательной версии объекта, но до его освобождения или уничтожения любой из его переменных экземпляра». –