Сохраните количество и сделку в iPhone - PullRequest
0 голосов
/ 23 июля 2010

Я хочу спросить о приложении для iPhone и объективном вопросе C.В программе реализации есть функция, называемая «dealloc». Разве эта функция вызывается приложением только один раз?

Например, если я выделяю объект и сохраняю его 2 раза, то счетчик остатков равен 2, и я никогда не использую 'release' в программе, кроме как в dealloc.Будет ли объект удален из памяти или цель будет удалена из памяти.Спасибо.

Ответы [ 2 ]

1 голос
/ 23 июля 2010

В программе реализации есть функция, называемая dealloc. Разве эта функция вызывается приложением только один раз?

Да.-dealloc уничтожает объект.Попытка отправить ему любое сообщение снова, включая -dealloc, является ошибкой.

Если я выделю объект и сохраню его 2 раза, то счетчик удержаний будет 2

Осторожный.Число сохраняемых данных равно , по крайней мере, 3. Объект может быть иным, чем ваш код.Лучше не беспокоиться о сохранении счета и думать только с точки зрения владения.

Каждое выделение, новое, копирование или сохранение является требованием владения.Метод dealloc объекта будет вызываться только тогда, когда все заявки на владение будут отменены.Заявление о праве собственности прекращается путем отправки -release.Поэтому, если вы никогда не освободите объект, кроме как в его собственной разметке, вы никогда не освободите его.

1 голос
/ 23 июля 2010

dealloc вызывается системой один раз, когда объект уничтожается (когда его счетчик ссылок достигает 0). Если в вашем классе есть переменные-члены, которые вы alloc используете в своей функции init, вы должны release указать их в своей функции dealloc.

Если вы дадите кому-то указатель на один из этих объектов-членов, и он retain его, участник может пережить release в вашем dealloc, но, отправив сообщение retain, они берут на себя ответственность за отправку сообщение release позже, гарантирующее его возможное уничтожение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...