私は目覚まし時計アプリを書いていますが、ユーザーに起床するチャイムを選択させる必要があります。サウンドのリストを含む UITableView があり、ユーザーがサウンドをタップすると再生したい。
ただし、 AudioServicesPlaySystemSound への呼び出しをステップ オーバーしない限り(または、サウンドを聞いた後にトリガーされる AudioServicesDisposeSystemSoundID への呼び出しにブレークポイントを設定しない限り)、サウンドは再生されません。
これはメインスレッドの問題であるという理論があったので、私は performSelectorOnMainThread を使用しました:
[self performSelectorOnMainThread:@selector(playWakeUpSound)
withObject:nil
waitUntilDone:true];
しかし、それは役に立ちませんでした。(waitUntilDone の値は問題ではないようです。)
この質問は有望でしたが、確認したところ、メソッドを 1 回しか呼び出していません。