Переменные array и array2 - это всего лишь C указатели на кусок памяти.Как и для любого выделенного кучи куска памяти в C, он должен быть malloced () и freed (), которые эффективно определяют время жизни куска памяти в отсутствие сборщика мусора.Объекты Obj-C - это небольшие специализированные куски памяти, но основная механика та же: вариант calloc () и free ().
Так что да, после отправки [release release] объекта массивазначение счетчика достигает нуля, и объект немедленно отправляет -dealloc для себя, который вызывает free ().После этого любая попытка доступа к фрагменту памяти, занятому объектом, приведет к сбою (или, что еще хуже, если другой объект Obj-C будет размещен по тому же адресу, вы получите сбои в не связанных местах по всему коду).
Поскольку array2 - это просто еще один указатель на тот же, теперь освобожденный, кусок памяти, вы тоже ничего не можете с ним сделать.Лучшее, что вы можете сделать, это установить такие указатели в ноль, чтобы предотвратить случайный доступ к памяти, которой у вас больше нет.Obj-C достаточно умен, чтобы сделать сообщения, отправленные на nil (сообщения, отправленные на nil-указатели), no-ops.