iOS AudioSessionInitialize Ошибка

Я пишу приложение для iPad, которое использует Audio Queue. Я сталкиваюсь с ошибкой в ​​результате вызова AudioSessionInitialize более одного раза. Я пытаюсь найти способ проверить, вызывался ли уже AudioSessionInitialize или нет, чтобы избежать этого, но пока не повезло. У кого-нибудь есть способ сделать это?

Заранее спасибо.

2 ответа

Вы можете просто обернуть его в блок dispatch_once согласно:

static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    AudioSessionInitialize(NULL, NULL, InterruptionListenerCallback, clientData);
    // Perform other setup here...
});

хотя в долгосрочной перспективе вам может оказаться проще использовать неявную инициализацию сеанса и обрабатывать события через делегата, как обсуждалось здесь:

Руководство по программированию аудио сеанса - инициализация аудио сеанса

Поскольку аудио сеанс в настоящее время является глобальным свойством, вы можете установить флаг глобальной переменной C при инициализации, а затем проверить эту глобальную переменную перед попыткой (повторной) инициализации. Однако блок dispatch_once с меньшей вероятностью вызовет ошибки состояния гонки, если ваше приложение является многопоточным.

Другие вопросы по тегам