Я изменил код, показанный ниже, на совместимый с 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 audio SDK, код прерывания звука показан в разделе 9.Прерывания этого PDF-файла.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];
}
}