我有一个问题,我现在还没有能够解决的问题,它只发生在发布版本中,我没有任何问题,当我在调试版本中运行它时。发布版本上的块崩溃
但我认为这是因为一个块没有被执行。我有一个这样的崩溃报告:
3 libdispatch.dylib 0x375d1c34 _dispatch_Block_copy + 8
4 libdispatch.dylib 0x375dc4ca dispatch_async$VARIANT$up + 6
5 Koldkrigsspionen 0x00020ef2 -[NOAudioManager audioPlayerDidFinishPlaying:successfully:] (NOAudioManager.m:807)
audioPlayerDidFinishPlaying的方法:成功是这样的:
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
if (musicPlayerCompletionBlock)
dispatch_async(dispatch_get_main_queue(), musicPlayerCompletionBlock);
}
块设置这样的:
- (void)setMusicCompletionBlock:(void (^)(void))theBlock
{
musicPlayerCompletionBlock = theBlock;
}
这样在头文件:
void (^musicPlayerCompletionBlock) (void);
你在哪里定义块,以及如何存储它?另外,你使用的是ARC吗? – 2012-08-04 11:08:50
该块在另一个对象中定义,如下所示: [[NOAudioManager sharedManager] setMusicCompletionBlock:^ {self videoDidFinish]; }]; 是的,我正在使用ARC。 音频播放完毕。该应用程序在发布版本中崩溃。 – WYS 2012-08-04 12:08:58
请编辑原始问题以包含正确格式化的信息。这将有助于澄清未来读者的问题,并且在评论中非常难以阅读。 – 2012-08-04 12:38:46