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 с меньшей вероятностью вызовет ошибки состояния гонки, если ваше приложение является многопоточным.