“Указательная” природа ссылок на экземпляры в Objective-C имеет определенные последствия для системы управления памятью.
Правила области видимости и, в частности, времени жизни переменных в чистом С обычно довольно просты: если вы создаете переменную путем ее объявления в некоторой области видимости, то когда эта область перестает существовать, перестает существовать и переменная. Такого рода переменные называются автоматическими (K&R 1.10). Например:
Но в случае указателя есть два вида памяти, о которых следует беспокоиться: сам указатель, который представляет собой целое число, представляющее адрес в памяти, и все, что находится по этому адресу. В языке программирования С при автоматическом уничтожении указателя ничто не ведет к автоматическому уничтожению того, на что он указывает:
Некоторые объектно-ориентированные языки программирования, в которых ссылка на экземпляр является указателем, автоматически управляют памятью, на которую указывают ссылки на экземпляры (примерами являются REALbasic и Ruby). Но Objective-C не является одним из таких языков. Поскольку язык С ничего не говорит об автоматическом уничтожении того, на что указывают ссылки на экземпляры, Objective-C реализует явный механизм управления памятью. Позже (в главе 12) я расскажу об этом механизме и о том, какие обязанности ложатся на программиста при его использовании. К счастью, при наличии механизма ARC эти обязанности меньшие, чем были ранее; тем не менее памятью по-прежнему необходимо управлять, и вы по-прежнему должны отчетливо понимать, как работает управление памятью экземпляров.