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