Я пытаюсь получить звук для воспроизведения в iPhone Simulator (используя 3.1 SDK). Когда я добавляю точку останова и выполняю код в GDB, звук воспроизводится. Однако, если я отключу точку останова, звук не воспроизводится.Звук играет в симуляторе iphone с точкой останова, но не удается играть без точки останова
код для вызова звук:
SoundEffect *completeSound = [myobj completeSound];
if (completeSound != nil) {
[completeSound play];
}
Класс SoundEffect имеет простой метод воспроизведения:
// Plays the sound associated with a sound effect object.
-(void)play {
// Calls Core Audio to play the sound for the specified sound ID.
AudioServicesPlaySystemSound(_soundID);
}
Если включить контрольную точку над методом «myobj completeSound», она играет в совершенстве. Однако, если нет точки останова, звук не испускается.
Аудиофайл - это файл CAF длиной 5 секунд.
Есть ли какая-то задержка, которую мне нужно добавить после вызова AudioServicesPlaySystemSound, чтобы убедиться, что она играет?
UPDATE: похоже, что использование метода AudioServicesAddSystemSoundCompletion является решением.
SoundEffect *completeSound = [myobj completeSound];
if (completeSound != nil) {
AudioServicesAddSystemSoundCompletion([completeSound _soundID],
NULL, NULL, AudioPlaybackComplete, self);
[completeSound play];
}
Затем статическая функция AudioPlaybackComplete вызывается, когда аудиоклип сделан. Это работает правильно - хотя я до сих пор не понимаю, почему аудио клип выходит из строя в первоначальном варианте использования.
Я столкнулся с этой проблемой при попытке воспроизведения kSystemSoundID_Vibrate сразу после моего пользовательского звука. Отключение воспроизведения kSystemSoundID_Vibrate в симуляторе решило проблему –