UIViewController не освобождается после извлечения из контроллера навигации, если действие начинается с делегата UIAlertView - PullRequest
2 голосов
/ 01 апреля 2011

не могли бы вы взглянуть на этот кусок кода:

/* This app is a game, the user can click an "abort" button anytime,
 * and he/she is therefore asked for confirmation ("really abort game?")
 */
- (IBAction)btnAbortClicked:(id)sender {
    UIAlertView *alert = [[UIAlertView alloc] init];
    [alert setMessage:@"Really abort game?"];
    [alert setDelegate:self];
    [alert addButtonWithTitle:@"Yes"];
    [alert addButtonWithTitle:@"No"];
    [alert show];
    [alert release];
}

/* Delegate method (I don't like it, I wish I had modal blocking windows) */
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 0)
    [self quitGame];
}

/* pop the view controller */
- (void)quitGame {
    [self.navigationController popToRootViewControllerAnimated:YES];
}

Проблема проста - но, видимо, мне ее недостаточно решить. UIViewController отключается, но не освобождается. И проблема строго связана с UIAlertView, потому что, если я просто вызываю quitGame из btnAbortClicked:, контроллер представления отключается и немедленно освобождается.

Вместо этого кажется, что какая-то таинственная сущность сохраняет его.

Вы можете мне помочь? Заранее спасибо.

1 Ответ

1 голос
/ 01 апреля 2011

Ну, я думаю, что вы все еще находитесь в alertView при вызове clickedButtonAtIndex. Я бы предложил вместо этого перейти к alertView: disDismissWithButtonIndex, чтобы вы вызывались после исчезновения вида alert.

...