У меня проблема с выпуском представления слишком много раз. Хотя в теории все просто, потому что я перевожу uiview в uiview, который является подклассом uiview, будучи анимированным и так далее, это не то, что я легко могу исправить. Он падает только 10% и только при определенных условиях и только 30% времени даже при этих условиях.
Другими словами, это своего рода комплекс. Иногда в моем методе dealloc счетчик сохранения этого UIView уже равен 1 (который освобождается при освобождении представления), и поэтому его не следует освобождать снова. Итак, что я сделал, это:
if ([mainView retainCount] > 1) {
NSLog(@"released");
[mainView release];
}
Обычно вызывается помощник с выпущенными сбоями, но не всегда, и это случается довольно часто, когда я иногда ожидаю, что это произойдет сбой. Я проверил на наличие утечек с помощью этого кода, и он никогда не протекает.
Теперь актуальный вопрос ... Неправильно ли выпускать что-либо из-за удержания? Я пробовал много разных способов исправить это, и пока это единственный надежный и не протекающий.
РЕДАКТИРОВАТЬ: Если нет, то как лучше скопировать один UIView в другой UIView?
mainView = newView;
[newView release];
Я попытался сначала освободить mainView, а затем вызвать копию для newView, но это вылетало. Вышеприведенное также отлично работает, за исключением того, что количество сохранений иногда на 1 меньше ожидаемого, даже если оно никогда не было выпущено в другом месте в коде.