0

アプリケーションで次のエラーが表示されます。これは、コールバック メソッドで新しい SubView を読み込んでいるときに発生します。以下は完全な詳細です。

私のアプリケーションでは、アプリの起動時に RootViewController があり、「AuthCheck」というサブビューが追加されます。その中で、何が起こっているかの詳細をユーザーに表示する認証チェックを実行します。AuthCheckController には、以下に示すように、非同期認証プロセスを処理するためのコールバック メソッドがあります。

   - (void)shellAuthRequired: (ServiceResponse *)response {

    [super shellAuthRequired:response];

    if (response.hasError) {

        [self showTryAgainAlert: response.errorText];
        return;
    }

    // TODO: go to main screen from here.
    IntroViewViewController *intview = [[IntroViewViewController alloc]initWithNibName:@"IntroViewViewController" bundle:nil];

    //[self.navigationController pushViewController:intview animated:YES];
    [self.view addSubview:intview.view];
}

ご覧のとおり、この方法では、必要な認証関連の詳細を表示する新しい画面にユーザーを転送し、画面には [続行] ボタンがあります。ユーザーが「続行」をクリックすると、「WebViewController」という新しいサブビューがロードされます。以下のコード

       -(IBAction)btnContinueToClicked:(id)sender
{
    WebViewController *wview = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:nil];
    [self.view addSubview:wview.view]
}

転送先の新しいサブビューを追加すると、「[IntroViewViewController performSelector:withObject:withObject:]: メッセージが割り当て解除されたインスタンス 0xd062f50 に送信されました」という例外が発生します。

このエラーの原因は何ですか?

ありがとう

ヴィッシュ

4

1 に答える 1

0

intview オブジェクトへの参照を保持していません。ARC を使用していると仮定します。つまり、ビューを取得したコントローラーは、メソッドが終了するとすぐに消えます。強力なプロパティにしてみてください。

于 2012-07-25T13:47:43.563 に答える