0

我已经实现了一个应用程序,它显示了一张上面有很多别针的地图。如果您按下一个引脚,您将进入第二个视图,该视图显示引脚后面的数据。一个按钮将您带回地图。

我的问题是,通过第三次触摸针,程序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];
     }
}

如何隔离导致崩溃的代码行?为什么它总是只在第三次触摸时崩溃?

我希望你能帮助我。

4

1 回答 1

1

将 NSLog 语句放在 if 的每个分支中。您几乎可以肯定地看到此语句会导致问题:

  [details viewDidLoad];

这是因为在某些时候您会执行以下操作:

  [details release];

有效地使细节无法访问。顺便说一句,你也应该几乎永远不要viwewDidLoad直接打电话。

于 2010-02-15T14:32:14.410 回答