Я отправил несколько вопросов, прежде чем, пытаясь понять, почему я получаю EXC_BAD_ACCESS, и я сделал немного отладкиПросмотра освобождения при использовании из-за предупреждения памяти
Смотрите здесь : Help debugging iPhone app - EXC_BAD_ACCESS
и:
Так что, я думаю, я обнаружил, что происходит.
Из моего журнала, я получаю это:
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000f
Crashed Thread: 0
Thread 0 Crashed:
0 libobjc.A.dylib 0x00003ebc objc_msgSend + 20
1 MyApp 0x0000378a -[PictureView clearPage] (PictureView.m:79)
Сначала я думал, что проблема была выпущена объект отправляется сообщение в функцию «clearPage», однако с тех пор говорить с другом, я я пришел к выводу, что сам объект PictureView уже может быть выпущен.
Это подтверждается моим выходом регистрации:
Fri Jan 8 20:28:32 unknown MyApp[2224] <Warning>: Picture View Unloaded
Fri Jan 8 20:28:32 unknown MyApp[2224] <Warning>: Memory warning from Picture view
Fri Jan 8 20:28:34 unknown MyApp[2224] <Warning>: Scaling image
Fri Jan 8 20:28:36 unknown MyApp[2224] <Warning>: Attempting to save image to disk
Fri Jan 8 20:28:37 unknown MyApp[2224] <Warning>: Saved file to: /var/mobile/Applications/065C0D37-95C1-41D4-98F0-16A3555682CD/Documents/MyImage1.jpg
Fri Jan 8 20:28:37 unknown MyApp[2224] <Warning>: Clearing page
Fri Jan 8 20:28:40 unknown ReportCrash[2225] <Notice>: Formulating crash report for process MyApp[2224]
Fri Jan 8 20:28:41 unknown com.apple.launchd[1] <Warning>: (UIKitApplication:com.yourcompany.MyApp[0xb8e1]) Job appears to have crashed: Bus error
Итак, я думаю, мнение, что я использую выгружается после получения предупреждения памяти, вызванной imagepicker ...
И мой вопрос: как я могу остановить это? Очевидно, мне нужно вызвать метод clearPage для PictureView, но я не могу, если он выгружен.
К сожалению, clearPage не делать то, что название намекает на. Он просто подготавливает представление для перерисовки, очищая его подзоны. PictureView - это представление, выведенное из rootviewcontroller: PictureView * picView = [[PictureView alloc] initWithNibName: @ "PictureView" bundle: nil]; \t [self.navigationController pushViewController: picView animated: YES]; \t [релиз picView]; Должен ли я выпускать это здесь? –
Итак, PictureView - это ViewController? Похоже, у вас проблема с висячим указателем. Проверьте назначенные розетки (в отличие от сохранения). Кроме того, переопределите didReceiveMemoryWarning и перерыв там; вызовите унаследованное, а затем убедитесь, что все ваши точки доступа являются «нормальными» значениями. –
Я сделал PictureView выход и установил его (неатомный, сохраняющий) в корневом контроллере. К сожалению, этот сбой не происходит каждый раз, поэтому его действительно сложно проверить. Теперь у меня на нервы :( –