3

storboard に 2 つのビュー コントローラーを持つナビゲーション コントローラーを作成しました。最初のViewControllerには、2番目のViewControllerに移動した場所から開始ボタンがあります。secondviewcontroller 内に、タイトル付きの 3 つのセグメントを持つセグメント コントロールを配置しました: Man 、 Truck 、 Movie 。

2 番目のビューコントローラーの実装ファイル内で宣言および定義された setActiveModel メソッド。このメソッドは、セグメント コントロールの 3 つのセグメントに対して大文字と小文字を切り替えます。

そして最後に、この setActivemethod と呼ばれるセグメント コントロールの IBaction 内です。

- (void) setActiveModel: (int) modelIndex
{
    switch ( modelIndex )
    {
        case 0:
            m_truckModel->setVisible(false); **---->>[ I get BAD_ACCESS error in this line which steps over in the debugger to viewdidload method to the line where I initialize setActiveModel to integer 0 ]    <<-----**
            m_metaioMan->setVisible(true);

            // stop the movie
            m_moviePlane->stopMovieTexture();
            m_moviePlane->setVisible(false);
            m_moviePlaneButton->setVisible(false);
            break;

        case 1:
            m_truckModel->setVisible(true);
            m_metaioMan->setVisible(false);           

            // stop the movie
            m_moviePlane->stopMovieTexture();
            m_moviePlane->setVisible(false);
            m_moviePlaneButton->setVisible(false);
            break;

        case 2:
            m_truckModel->setVisible(false);
            m_metaioMan->setVisible(false);

            m_moviePlane->setVisible(false);
            m_moviePlaneButton->setVisible(true);
            break;
    }
}

- (IBAction)onSegmentControlChanged:(UISegmentedControl*)sender
{
    [self setActiveModel:sender.selectedSegmentIndex];
}
4

2 に答える 2

1

Instruments を使用して、コード内でオーバー リリースが発生した場所を見つけることができます。インストゥルメントの使用方法については、こちらのリンクを参照してください。 割り当て解除されたオブジェクトへのメッセージの削除

于 2012-09-11T21:05:10.107 に答える
0

使ってみたことはありますか

[self.m_truckModel setVisible:NO];

ちょっと変わったコーディング方法です。ストーリーボードも確認する必要があります。

于 2013-07-02T01:31:54.150 に答える