Документ Apple Advanced Memory Management довольно хорошо написан и точен, но мне интересно, что на диаграмме в нем есть:
(моя версия — 28 сентября 2011 г.)
, после alloc
и init
счетчик ссылок (или счетчик сохранения) равен 1, что является основным правилом управления памятью. После continue
счетчик ссылок теперь равен 2. Затем класс C отправляет объекту сообщение copy
, и после этого объект по-прежнему имеет счетчик ссылок, равный 2. новый объект имеет счетчик ссылок 1.
Пока это соответствует правилам, но затем, в верхней части диаграммы, класс A отправляет объекту сообщение release
, а счетчик ссылок должен быть равен 1? Вместо этого на диаграмме стоит цифра 2. Затем класс B также отправляет объекту сообщение release
, и счетчик ссылок теперь должен быть равен 0. Вместо этого на диаграмме показана 1. Это правильно, или может есть другой способ читать схему, или может быть какая-то концепция не верна выше?