0

プロジェクトをARCに変換したばかりで、UIActionsheetを閉じた後、EXEC_BAD_ACCESSを取得しています。以前は機能していたので、これがARCに関連しているかどうかはわかりません。ゾンビは有効になっていますが、何も表示されません。楽器を試してみましたが、何も表示されませんでした。

これはモーダルビューコントローラー、ケース0で表示され、終了ボタンは正常に機能しますが、他の2つではアクセスエラーが発生します。

これはARCへの最初の変換ですが、ここで何かが足りませんか?

アクションシートの作成:

-(IBAction)quitPressed:(id)sender {
    UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Quit This Game?"    delegate:self cancelButtonTitle:@"Keep Playing" destructiveButtonTitle:@"Quit" otherButtonTitles:@"Quit and Reveal Answers",nil];
    [sheet showInView:self.view];

}

アクションシートの代表者:

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{

    switch (buttonIndex) {
        case 0:  //quit
            [self dismissViewControllerAnimated:NO completion:^{
            [self.delegate quitGame];
        }];
        break;
        case 1:  //quit and reveal
            NSLog(@"reveal");
            break;
        case 2: //cancel
            NSLog(@"cancel"); 
            break;
        default:
        break;
    }

}

4

3 に答える 3

0

助けてくれてありがとう。xcode 4.5でプロジェクトを実行したときに、問題が見つかりました。コンパイルエラーが発生しました:switch case is protected in scope

xcode4.3ではそのエラーは発生しませんでした

このスレッドで解決されましたARCを使用するようにプロジェクトを変換する場合、「スイッチケースは保護されたスコープにあります」とはどういう意味ですか?

各ケースを中かっこで囲みましたが、問題は修正されました。

于 2012-09-15T01:20:10.973 に答える
0

あなたが.hファイルdelegateで宣言さstrongれている場合。を使用して、 .mファイル (できれば)で少なくとも 1 回初期化しましたか?self.delegateviewDidLoad

self.delegate = [[UIApplication sharedApplication] delegate];

于 2012-09-05T16:24:07.737 に答える
0

リテイン サイクルを回避するために、デリゲートはweakor assign( ivar の場合は__weak/ ) にする必要があります。__unsafe_unretained

作成したシートへの参照を保持します。シートを閉じたら、その参照をクリアできます。

于 2012-09-06T07:29:37.140 に答える