私のiPhoneアプリはオーディオを再生し、ユーザーがホームボタンを押すとゆっくりとフェードアウトする必要があります(アプリをバックグラウンドに送ります)。私は自分のオーディオユニットをフェードアウトさせることができますが、残念なことに、アプリがバックグラウンドに送られて以来、音は凶悪なクラックルで終わります。アプリをバックグラウンドに遅らせるためにループを使用することはできますか?
つまり、私はバックグラウンドに遅れる必要があります。私はループ内のAUの振幅を確認し、振幅がゼロになるとループを終了することができました。二重の安全を確保するために、私は遅延を1/10秒を超えないように警報をつけた。具体的には、私のAppDelegate
のapplicationDidEnterBackground
方法では、私は言う:
time_t s1 = clock() + (time_t)(0.1 * CLOCKS_PER_SEC);
while(([sinus current_amplitude] > 0.0) && (s1 > clock()));
これは期待通りに動作しますが、アプリをストール。これは悪いスタイルと思われますか、それとも問題ありませんか?
フォロー:入力用感謝。はるかにエレガントである
NSDate *future = [NSDate dateWithTimeIntervalSinceNow: 0.1 ];
[NSThread sleepUntilDate:future];
:私は遅延の代わりに、バックグラウンドでプレーを続け、今私はこのようにそれをやっているにもこだわってきました。