Хорошо ... связываемся воедино из подсказок, оставленных как в вопросе, так и в комментариях.
Во-первых, это:
- (void)dealloc {
[super dealloc];
[_letterImage release];
}
Это просто неправильно и может стать источником краха сам по себе. Вы сообщаете экземпляру, которому принадлежит _letterImage
, команду dealloc , а затем говорите _letterImage
об освобождении. К моменту вызова [_letterImage release]
объект, содержащий _letterImage
, уже мертв и ушел.
Хотя это может вызвать сбой, вероятно, это не так (но это все равно следует исправить). В комментарии вы говорите:
Я обнаружил, что ошибка исчезла, когда я переехал [super dealloc].
GenericCardView не делает ничего странного в
все (только некоторые предварительные настройки, которые
является общим для нескольких различных видов
Card
s). Итак, я понятия не имею, почему это
случилось, и это все делает меня скорее
неудобно.
Все dealloc
методы всегда должны вызывать [super dealloc];
как последнюю строку кода в реализации -dealloc
метода . Всегда и без исключения *.
То, что что-то начинает работать, когда вы удаляете вызов на [super dealloc]
, на 100% гарантирует, что в вашем коде есть ошибка.
В этом случае я не удивлюсь, что ваш класс GenericCardView
неправильно управляет переменными экземпляра. Я хотел бы начать с просмотра всех переменных, выпущенных в методе dealloc
этого класса, чтобы убедиться, что они правильно управляются в первую очередь (а также проанализировать саму реализацию dealloc).
В любом случае, это очень пахнет проблемой перепроизводства. Верните свой код в состояние, в котором постоянно происходят сбои, затем используйте инструменты обнаружения зомби в Инструменте, чтобы увидеть, обнаруживают ли они сбой и идентифицируют ли объект, который был выпущен повторно. Даже если истинная причина окажется только , которую вы не называли [super dealloc]
последним в ваших dealloc
методах, подтверждение того, что то есть , должно повысить ваш уровень комфорта .
* На самом деле есть одно исключение; когда вы пишете свой собственный корневой класс. Но это настолько редкое явление, что его нельзя считать. (Счастлив, парень? :)