Zmieniłem poniższy kod na zgodny z ARC.Jak poprawnie używać __bridge dla ARC
Po prostu zmieniłem to tak, jak sugerował Xcode, i nie pokazuje błędu w Xcode. Ale kod miażdży, gdy wydarzenie się wydarzy. Czy ktoś ma pomysł, aby to naprawić?
Nie jestem pewien, czy to się zdarza z powodu pakietu SDK Acapela, czy nie.
To nie jest kod ARC, działa dobrze.
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];
}
}
Jest to zgodne ARC, jednak miażdży w [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];
}
}
Dodatkowe info. Używam Acapela audio SDK, kod przerwania dźwięku jest pokazany na 9. Interruptions tego pliku PDF. http://www.ecometrixem.com/cms-assets/documents/44729-919017.acapela-for-iphone.pdf
To jest zrzut ekranu dla sympatii.
SOLVED ten kod działa, dzięki.
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];
}
}
__bridge_retained jest dla obiektów CF i obiektów, które wymagają odniesienie być na bieżąco z nimi. __bridge jest używany dla obiektów NSO, które nie wymagają zachowania. – CodaFi
Dzięki za wyjaśnienie. :) –