Iphone 调用[UIImageView setImage:]时,应用程序在激活后崩溃

Iphone 调用[UIImageView setImage:]时,应用程序在激活后崩溃,iphone,multithreading,crash,background,audiounit,Iphone,Multithreading,Crash,Background,Audiounit,我有一个用于录音和播放音频的回调应用程序。在录制回调中,我调用一个函数来更新GUI: [mainViewController performSelectorOnMainThread:@selector(updateGuiAfterOnset) withObject:nil waitUntilDone:NO]; 它工作正常,但在我将应用程序发送到后台(使用设备的主页按钮)并再次打开后,该应用程序在第二次调用UpdateGuiAfterStart后崩溃,具体而言,它在调用以下命令后崩溃: [myU

我有一个用于录音和播放音频的回调应用程序。在录制回调中,我调用一个函数来更新GUI:

[mainViewController performSelectorOnMainThread:@selector(updateGuiAfterOnset) withObject:nil waitUntilDone:NO];
它工作正常,但在我将应用程序发送到后台(使用设备的
主页
按钮)并再次打开后,该应用程序在第二次调用
UpdateGuiAfterStart
后崩溃,具体而言,它在调用以下命令后崩溃:

[myUIImageView setImage:myUIImage];
我在
应用程序WillResignActive
应用程序IDBecomeActive
中所做的唯一事情是停止和启动音频单元:

AudioOutputUnitStop(audioUnit);

我的直觉是,在进入背景/前景的过程中,一些变量被搞乱了,但这只是一个猜测

有什么想法吗?当我在多线程应用程序中进入后台时,有什么建议我需要做的事情吗

编辑如果从主线程调用gui更新方法(通过点击按钮),应用程序也会崩溃

事故报告中的相关部分:

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

看起来myUIImage无效。它是自动删除的还是手动重新生成的。

这表明myUIImageView没有保留。

事实上,我是用
[UIImageName:][/code>设置它的,但我没有保留它(它保存在C结构中,当然不能保留-现在我看到这是个坏主意…)。当应用程序转到后台时是否自动释放?
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