Вы можете освободить объект, но указатель на него все еще может иметь значение. Просто значение мусора (то есть висячий указатель ).
Вот почему вы видите много кода, такого как:
[myObject release];
myObject nil;
, который сначала освобождает объект, а затем устанавливает указатель на nil
. Таким образом, любое сообщение, отправленное на него, будет молча терпеть неудачу (потому что отправлять сообщения в nil
объекты в Objective-C безопасно), а не падать, как это, кажется, происходит с вашим приложением.
Поскольку вы проверяете указатель, я подозреваю, что вы делаете что-то странное с управлением памятью. Не. Просто следуйте Правилам управления памятью и освобождайте только те объекты, которые вам принадлежат.