Ссылка не возвращается ноль, даже если освобожден - PullRequest
1 голос
/ 04 ноября 2010

Я столкнулся с очень трудным здесь.

Мой класс создан самостоятельно (+ (void) start; -метод), которому отправляется делегат. Мне нужно отправить делегату несколько сообщений через селектор делегатов. Чтобы проверить, был ли делегат освобожден, я попытался if (delegate == nil/NULL), но даже если он действительно выпущен, он все равно говорит, что не был.

Как мне это исправить? (делегат назначается на id)

Вот как создается мое приложение:

AppDelegate
> NavController
>> TableView 
>>> Post 
>>>> GetData 

GetData - это самостоятельно созданный класс. Post является делегатом GetData и выпускается TableView / NavController. После выпуска Post также устанавливается ноль.
Другими словами, GetData не освобождает своего делегата !

Ответы [ 2 ]

5 голосов
/ 04 ноября 2010

Удаление содержимого указателя не автоматически устанавливает указатель в NULL. Вы должны сделать это явно, например,

[delegate release];
delegate = nil;
3 голосов
/ 04 ноября 2010

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

Пользователь класса с делегатом отвечает за установку делегата на nil, когда объект делегатавышел.Сам объект не обнаруживается.

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