2

我有一个播放音频的应用程序,它使用:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

在后台播放音频。

按下设备的唤醒/睡眠按钮1将锁定屏幕并关闭显示屏。如果音频播放大约 8 分钟,并且我按下睡眠/唤醒或主页按钮,应用程序将崩溃。

这很奇怪,有几个原因:

  1. 该应用程序未“恢复”,仅显示正在打开并显示锁定屏幕。
  2. 没有调用 App 委托方法:-applicationWillEnterForeground:,-applicationDidBecomeActive:
  3. 该应用程序不会通过以下方式在锁定屏幕上显示任何艺术品MPNowPlayingInfoCenter

我启用了 NSZombies,然后我得到:

 *** -[__NSArrayM removeObject:]: message sent to deallocated instance 0x10bf9060

回溯看起来像这样(没有多大帮助!):

回溯

控制台输出

这是崩溃时的控制台输出。

Aug 29 11:37:30 unknown SpringBoard[51] <Notice>: Posting 'com.apple.iokit.hid.displayStatus' notifyState=1
Aug 29 11:37:30 unknown UserEventAgent[12] <Warning>: DEBUG: Changing screen blanked state: 0
Aug 29 11:37:30 unknown SpringBoard[51] <Notice>: MultitouchHID: detection mode: 255->0 (deferring until bootloaded)
Aug 29 11:37:30 unknown SpringBoard[51] <Notice>: MultitouchHID: device bootloaded
Aug 29 11:37:30 unknown SpringBoard[51] <Notice>: MultitouchHID: detection mode: 0->0
Aug 29 11:37:30 unknown myapp[19495] <Error>: *** -[__NSArrayM removeObject:]: message sent to deallocated instance 0x12158bc0
Aug 29 11:37:38 unknown SpringBoard[51] <Notice>: Posting 'com.apple.iokit.hid.displayStatus' notifyState=0
Aug 29 11:37:38 unknown SpringBoard[51] <Notice>: MultitouchHID: detection mode: 0->255
Aug 29 11:37:38 unknown UserEventAgent[12] <Warning>: DEBUG: Changing screen blanked state: 1
Aug 29 11:37:49 unknown kernel[0] <Debug>: AppleSerialMultiplexer: mux-ad(eng)::dormancySetIntervalGated: Setting dormancy interval to 0 ms with mask 0

关于如何追踪问题的任何建议?当显示锁定屏幕时,似乎有一些系统级调用被发送到应用程序,但我不知道它们是如何触发-removeObject调用的,甚至谁拥有这个对象?

1. iPhone顶部的右侧是唤醒/睡眠按钮。它是一个薄的、不显眼的按钮。激活它需要相当大的压力。再加上不显眼,意外激活的可能性较小。它还提供了良好的触觉反馈。唤醒/睡眠按钮有两个主要用途,即让 iPhone 立即进入睡眠模式并将其从睡眠模式中唤醒。您还可以按两次将来电直接发送到语音信箱,这是一项只需触摸即可完成的有用功能。

4

0 回答 0