Скорее всего, вы перевыпускаете iTouren
и, таким образом, этот вызов release
вызывает сбой.То есть iTouren
уже освобожден к моменту, когда вы освобождаете содержащий массив, и когда этот содержащий массив отправляет release
на уже освобожденный iTouren
ваше приложение вылетает.
(Конечно, iTours
это может быть объект, который уже освобожден. В любом случае это проблема чрезмерного выпуска.)
Включите обнаружение зомби и посмотрите, не устраняет ли это конкретную проблему.
Обратите внимание, что
число, возвращаемое retainCount
, бесполезно
.Абсолютные счетчики хранения являются деталями реализации и часто будут определенным значением, которое выглядит как бессмыслица.
В этом случае окончательный release
объекта не уменьшает счет сохранения.Зачем?Потому что это будет потраченный впустую цикл, когда объект все равно будет освобожден.Для retainCount
было бы невозможно вернуть 0, потому что по определению объект с сохраняемым счетчиком 0 уже был освобожден и, таким образом, в любом случае больше не является жизнеспособным получателем сообщения.