iPhone: попытка переключения представлений создает EXC_BAD_ACCESS только на третьем переключателе - PullRequest
0 голосов
/ 15 февраля 2010

Я реализовал приложение, которое показывает карту с большим количеством булавок на ней. Если вы нажмете одну булавку, вы получите второй вид, который показывает данные позади булавки. Кнопка возвращает вас к карте.

Моя проблема в том, что при третьем касании булавки программа вылетает с 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];
     }
}

Как определить, какая строка кода вызывает сбой? Почему он всегда падает только при третьем касании?

Надеюсь, вы мне поможете.

1 Ответ

1 голос
/ 15 февраля 2010

Поместите операторы NSLog в каждую ветвь ifs. Вы почти наверняка увидите, что это утверждение вызывает проблему:

  [details viewDidLoad];

Это потому, что в какой-то момент вы выполняете это:

  [details release];

эффективно делает детали недоступными. Кстати, вы также почти никогда не должны звонить viwewDidLoad напрямую.

...