我将下面显示的代码更改为ARC兼容的代码。
我只是按照Xcode的建议更改了它,它没有显示Xcode上的错误。但是,一旦事件发生,代码就会崩溃。有人想办法解决这个问题吗?
我不确定这种迷恋是否是因为acapela SDK而发生的,或者不是。
--这是非ARC代码,工作正常.
void MyInterruptionListener(void *inClientData, UInt32 inInterruptionState) {
AcapelaSpeech* anAcapelaSpeech = *(AcapelaSpeech**)inClientData;
if (inInterruptionState == kAudioSessionBeginInterruption) {
[anAcapelaSpeech setActive:NO];
status = AudioSessionSetActive(NO);
}
if (inInterruptionState == kAudioSessionEndInterruption) {
status = AudioSessionSetActive(YES);
[anAcapelaSpeech setActive:YES];
}
}--这是ARC兼容的,但它依赖于anAcapelaSpeech setActive:NO;.
void MyInterruptionListener(void *inClientData, UInt32 inInterruptionState) {
AcapelaSpeech* anAcapelaSpeech = (__bridge_transfer AcapelaSpeech*)inClientData;
if (inInterruptionState == kAudioSessionBeginInterruption) {
[anAcapelaSpeech setActive:NO];
AudioSessionSetActive(NO);
}
if (inInterruptionState == kAudioSessionEndInterruption) {
AudioSessionSetActive(YES);
[anAcapelaSpeech setActive:YES];
}
}附加信息.我正在使用Acapela音频SDK,音频中断代码显示在9.http://www.ecometrixem.com/cms-assets/documents/44729-919017.acapela-for-iphone.pdf
这是暗恋的截图。

解决了这段代码的工作,谢谢。
void MyInterruptionListener(void *inClientData, UInt32 inInterruptionState) {
AcapelaSpeech *anAcapelaSpeech = (__bridge id) (*(void **) inClientData);
if (inInterruptionState == kAudioSessionBeginInterruption) {
[anAcapelaSpeech setActive:NO];
AudioSessionSetActive(NO);
}
if (inInterruptionState == kAudioSessionEndInterruption) {
AudioSessionSetActive(YES);
[anAcapelaSpeech setActive:YES];
}
}发布于 2012-04-06 23:48:34
你需要这样的东西:
id asObject = (__bridge id) (*(void **) ptr);https://stackoverflow.com/questions/10050371
复制相似问题