Проверьте, был ли объект выпущен или нет - PullRequest
0 голосов
/ 13 сентября 2011

В моем приложении небольшая путаница.

Как проверить, был ли объект выпущен или нет в iPhone?

Ответы [ 3 ]

12 голосов
/ 13 сентября 2011

Извините, но вы пытаетесь решить не ту проблему.

Если вы следуете некоторым простым правилам, совершенно не нужно «выяснять», был ли объект освобожден или нет; ты узнаешь.

Простые правила:

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

Не использовать retainCount. Если объект был освобожден (т. Е. Его счетчик хранения равен нулю), то вы не сможете выполнить какие-либо операции над объектом, поскольку он больше не существует! Кроме того, даже если это в настоящее время единица, что значит сказать, что он не входит в пул автоматического выпуска и будет нулем в следующий раз, когда вы посмотрите?

2 голосов
/ 13 сентября 2011

будет достаточно любого сообщения объекту, когда зомби включены.если программа вылетает из-за того, что вы отправили сообщение зомби, то вы знаете!

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

2 голосов
/ 13 сентября 2011

Если объект был освобожден, вы не можете получить доступ к его свойствам.

Вы можете использовать Profiler (NSZombies), чтобы определить, какие объекты были освобождены и затем доступны.

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