0

ピンがたくさんある地図を表示するアプリを実装しました。1 つのピンを押すと、ピンの背後にあるデータを示す 2 番目のビューが表示されます。ボタンでマップに戻ります。

私の問題は、ピンを 3 回タッチすると、プログラムが次のEXC_BAD_ACCESSメソッドでクラッシュすることです。

 - (void) switchViews {
     if(self.details == nil){
           Kundendetails *detailAnsicht = [[Kundendetails alloc] initWithNibName:@"ViewList" bundle:nil];
          detailAnsicht.rootViewController = self;
          self.details = detailAnsicht;
          detailAnsicht.map = self.map; 
     }
     if(self.details.view.superview == nil) {
          [map.view removeFromSuperview];
          [self.view addSubview:details.view];
          [details viewDidLoad];
     } else {
          [details.view removeFromSuperview];
          [details release];
          [self.view addSubview:map.view];
     }
}

クラッシュの原因となっているコード行を特定するにはどうすればよいですか? 3回目のタッチでのみクラッシュするのはなぜですか?

あなたが私を助けてくれることを願っています。

4

1 に答える 1

1

ifs の各ブランチに NSLog ステートメントを配置します。このステートメントが問題を引き起こしていることがほぼ確実にわかります。

  [details viewDidLoad];

これは、ある時点でこれを実行するためです。

  [details release];

効果的に詳細にアクセスできなくなります。ちなみに、viwewDidLoad直接呼び出すことはほとんどありません。

于 2010-02-15T14:32:14.410 に答える