невозможно обнаружить сбой в EKEventEditViewController - PullRequest
0 голосов
/ 24 января 2012

когда я нажимаю кнопку «Готово» в EKEventEditViewController, приложение закрывается, говоря «exc_bad_access». Я также использовал точку останова, чтобы обнаружить ее, но не могу ее найти. Там нет ничего о сбое в GDB. Где я должен проверить аварию. Готовая кнопка не переносит управление на EKEventEditViewDelegate - метод. Это просто сбой. Помогите мне, плз.

вот мой код

-(void)viewWillAppear:(BOOL)animated
{

EKEventEditViewController *addController = [[EKEventEditViewController alloc] 
 initWithNibName:nil bundle:nil];
addController.eventStore = self.eventStore;
addController.event = event;
addController.editViewDelegate = self;
[self presentModalViewController:addController animated:YES]; 
[super viewWillAppear:YES];

}

 #pragma mark - 
 #pragma mark EKEventEditViewDelegate

- (void)eventEditViewController:(EKEventEditViewController *)controller 
      didCompleteWithAction:(EKEventEditViewAction)action {

NSError *error = nil;
EKEvent *thisEvent = controller.event;

switch (action) {

         case EKEventEditViewActionCanceled:    
         break;

    case EKEventEditViewActionSaved:
            [controller.eventStore saveEvent:controller.event  
                    span:EKSpanThisEvent error:&error]; 
        break;

    case EKEventEditViewActionDeleted:
        [controller.eventStore removeEvent:thisEvent span:EKSpanThisEvent 
                     error:&error];
        break;

    default:
        break;
}

[controller dismissModalViewControllerAnimated:YES];
[self backTopreviousController];
}

-(void)backTopreviousController
{
  [self.navigationController popToRootViewControllerAnimated:YES];
 }

Ответы [ 3 ]

1 голос
/ 24 января 2012

exc_bad_access предполагает, что вы обращаетесь к памяти, которая была освобождена (вероятно, проблема управления памятью). Эти проблемы немного сложны для решения, потому что вы можете в какой-то момент выпустить объект (который вы не должны), и вы только столкнетесь с проблемой немного позже при доступе к этому объекту.

Вы можете попробовать следующее:

  1. Нажмите на кнопку «Run Button Dropdown»
  2. Из списка выберите Profile
  3. Должна открыться программа «Инструменты», где вы также можете выбрать Zombies
  4. Теперь вы можете взаимодействовать со своим приложением и пытаться вызвать ошибку
  5. Как только возникает ошибка, вы должны получить подсказку, когда ваш объект был освобожден и, следовательно, освобожден.

Зомби http://www.dimzzy.com/blog/wp-content/uploads/2011/02/leaky-zombies-tool.png

0 голосов
/ 30 октября 2012

Ваш код сбой из-за следующих строк.

[controller dismissModalViewControllerAnimated:YES];
[self backTopreviousController];

либо вы хотите всплыть или отклонить.Но не оба.Это зависит от того, как вы назвали этот класс.Нажмите или представьте мод!

0 голосов
/ 24 января 2012

Отладка программы после установки точки останова в начале eventEditViewController:didCompleteWithAction. Как только ваша программа достигнет точки останова, выполните пошаговое выполнение.

Делая так, вы будете знать либо:

  1. , какой оператор вызывает сбой программы, или

  2. , что программа аварийно завершает работу, даже не введя этот метод.

В случае 1 вы должны проверить каждый объект, на который отправляете сообщение, и убедиться, что оно не было освобождено. В случае 2 вы должны проверить определение действия, связанное с кнопкой Готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...