Не используйте retainCount
, в большинстве случаев он не работает так, как вы ожидаете.
Ваш второй NSLog
обращается к освобожденной памяти как объекту.В этом конкретном случае эта освобожденная память все еще содержит достаточно старых данных из строки NSString, которая была только что освобождена для программы, чтобы не вылетать при вызове метода retainCount
.Если бы вы запустили это с NSZombieEnabled
, вы бы получили сообщение об ошибке при отправке сообщения в освобожденный экземпляр.
Причина, по которой он возвращает 0 при вызове nil, состоит в том, что методы, возвращающие целые числа, всегда возвращают 0 при вызовена нулевом объекте.