приложение вылетает после активации, при вызове [UIImageView setImage:] - PullRequest
0 голосов
/ 04 февраля 2011

У меня есть приложение с обратными вызовами для записи и воспроизведения звука. Из записи обратного вызова я вызываю функцию для обновления GUI:

[mainViewController performSelectorOnMainThread:@selector(updateGuiAfterOnset) withObject:nil waitUntilDone:NO];

Работает нормально, но после того, как я отправляю приложение в фоновый режим (с помощью кнопки home на устройстве) и снова открываю его, приложение вылетает после 2-го вызова updateGuiAfterOnset и, в частности, после вызова :

[myUIImageView setImage:myUIImage];

Единственное, что я делаю в applicationWillResignActive и applicationDidBecomeActive, это остановка и запуск audioUnit:

AudioOutputUnitStop(audioUnit);

и

AudioOutputUnitStart(audioUnit);

Моя интуиция заключается в том, что некоторая переменная запуталась во время процесса перехода к фону / переднему плану, но это только предположение.

Есть идеи? Есть ли какие-либо рекомендуемые вещи, которые мне нужно сделать при переходе в фоновый режим в многопоточном приложении?

EDIT Приложение также аварийно завершает работу, если метод gui-update-method вызывается из основного потока (при нажатии кнопки).

Соответствующая часть из отчета о сбое:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000008
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                     0x000027d8 objc_msgSend + 16
1   UIKit                               0x00009738 -[UIImageView setImage:] + 140
2   TimeKeeper                          0x00002b7a -[MainViewController updateGuiAfterOnset] (MainViewController.m:89)
3   CoreFoundation                      0x0003e2e4 -[NSObject(NSObject) performSelector:withObject:] + 16

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

Предполагается, что myUIImageView не сохраняется.

1 голос
/ 04 февраля 2011

Похоже, myUIImage недопустимо. Был ли он автоматически выпущен или выпущен вручную по ошибке.

...