1
私たちは(cocos2dを含む)素晴らしい作品があります。 私のクラスでは、約1ms以下の高分解能タイマーを実装しなければなりませんでした。高解像度タイマーは、私のアプリケーションの残りの部分をフリーズ
タイマークラスが働いているが、、(1)私はしばらくの間を持っているので、(1)のみ
アプリの残りの部分にもロードされず、画面が私の中で黒-it取引でありますここに私のコードは次のとおりです。
-(void)HighResolutionTimer
{
while(1)
{
if(TimerFlag==0) //take time once
{
start = [NSDate date];
TimerFlag=1;
}
end= [NSDate date]; //check timer
if([end timeIntervalSinceDate:start]*1000.0f >0.5) //wait for 1ms
{
TimerFlag=0;
[self sampleAudio]; //do my job(with NSLog)
}
if(stopTimer==1) //break
{stopTimer=0; break;}
}
}
この中に何をすることができ、私は入力(1)LETプロセッサに順に並列に他のものを行いますか? この方法はiPhoneのプロセッサにとっては重すぎますか? 1msごとに何かを呼び出す別の方法がありますか?
私はそれほど愚かではありません。もう一度読むと、CANTは50msの分解能に達していないので、NSTimerを使用します。私は1ms以下が必要です!だから私は別のやり方でそれをしなければならない。私はあなたが書いたディスパッチコマンドを理解できませんでした。 – Curnelious
どうすれば別のスレッドに入れられますか?私のコードのどこにその行を置く必要がありますか?私はこのスレッドの事を理解できませんでした。 – Curnelious
GCDによるバックグラウンドスレッドの使用の基本については、GCDの参考文献を参照してください。ここでは、参考文献へのリンクを示します。 http://developer.apple.com/library/mac/#documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/reference.html – Eugene