UIImagePickerController Camera Source, вызывающий сбой приложения - PullRequest
0 голосов
/ 31 июля 2010

При использовании UIImagePickerControllerSourceTypeCamera.

я получаю «Предупреждение о получении памяти. Уровень = 1»

Если я получаю доступ к камере сразу после входа в приложение, я получаю «Предупреждение о получении памяти. Уровень = 1», но когда я выбираю опцию камеры после доступа ко всем другим функциям приложения, приложение вылетает, пока отображается консоль отладчика

Получено предупреждение о памяти. Уровень = 1
Программа получила сигнал: «EXC_BAD_ACCESS».

Почему это происходит? При сборке и анализе я не получаю никаких уведомлений об утечках памяти.

 if(actionSheet.tag == 1){
      addButton.enabled = YES;
      UIImagePickerController * picker = [[[UIImagePickerController alloc] init] autorelease];
      picker.delegate = self;

      if (buttonIndex == 0)
      {

         NSLog(@"selecting camera"); 
         picker.sourceType = UIImagePickerControllerSourceTypeCamera;

         [self presentModalViewController:picker animated:YES];  
      }
      else if (buttonIndex == 1){

          NSLog(@"choosing album");
          picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
          [self presentModalViewController:picker animated:YES];
      }
      else
      {
          //NSLog(@"cancel");
      }

  }

Ответы [ 2 ]

0 голосов
/ 23 ноября 2010

Это потому, что UIImagePicker запустил ваш ViewDidUnload.Так что все экземпляры становятся зомби.Поэтому направление для решения этой проблемы - «Почему UIImagePicker» вызвало ViewDidUnload.

У меня та же проблема, и я пока не могу найти решение.

0 голосов
/ 31 июля 2010

EXC_BAD_ACCESS обычно является противоположностью утечки: перевыпущенный объект. Объект, который сохраняет счетчик, упал до 0, но вы все еще держите указатель на него где-то. Получив доступ к этому указателю, вы можете получить EXC_BAD_ACCESS или другое странное поведение.

Есть и другие возможности. Это просто означает, что вы пытаетесь получить доступ к памяти, которой вы не владеете.

В вашем случае это не обязательно связано с UIImagePickerController. Представление средства выбора просто вызывает предупреждение о памяти, и в ответ на это предупреждение ваше приложение освобождает память в различных местах. Я предполагаю, что, по крайней мере, один из этих объектов уже был выпущен ранее и теперь является висящим указателем.

Чтобы отладить это, вы должны попробовать NSZombieEnabled. См. Этот вопрос для получения дополнительной помощи по обнаружению такого рода ошибки: получен сигнал EXC_BAD_ACCESS

P.S .: Вы должны были найти его при поиске EXC_BAD_ACCESS

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