Вероятно, объект был изменен после освобождения

Я работаю над проектом для iPhone. Теперь я запускаю новый UIViewController из другого UIViewController, а затем переключаюсь между ними. Вот мой код.

iGreenAppDelegate *delegate = [UIApplication sharedApplication].delegate;
if(checkInViewController) {
    [checkInViewController release];
    checkInViewController = nil;
}
checkInViewController = [[CheckInViewController alloc] initWithCheckpoint:checkpoint];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.8];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:[delegate window] cache:YES];
[[delegate rootTabBarController].view removeFromSuperview];
[[delegate window] addSubview:checkInViewController.view];
[UIView commitAnimations];

Проблема заключается в том, что я второй раз запускаю UIViewController, я хочу освободить его, чтобы избежать утечки памяти. Отладчик отображает

iGreen (916,0x3f60348c) malloc: ошибка для объекта 0x130350: неверная контрольная сумма для освобожденного объекта - объект, вероятно, был изменен после освобождения. установить точку останова в malloc_error_break для отладки

Это странно, потому что аналогичные коды в других частях не возвращают такую ​​ошибку. Более того, я попробовал автозапуск, но программа сразу вылетит, а отладчик сообщает, что я изменяю завершенные слои.

Я работал над этой проблемой всю ночь и все еще не понимал ее.

16
задан JasonMArcher 8 November 2014 в 02:30
поделиться