彼、[self setNeedsDisplayInRect:(dRect)] がすべて (必要なものだけでなく) を描画し、"dRect" で画面を更新することに気付きました。そこで、次のように drawRect メソッドを編集し始めました。
- (void)drawRect:(NSRect)dirtyRect{
if (gUs==1){
imagePos = NSMakePoint(0, 0);
[_bz_BG dissolveToPoint:imagePos fraction:1.0];
[self drawBPM];
[self writeSeq1steps];
[self writeSeq2steps];
[self drawSeq1Patterns];
[self drawSeq2Patterns];
[self drawSeq1];
[self drawSeq2];
[self drawSampleNameSeq1];
[self drawSampleNameSeq2];
[self drawBattCharge];
[self drawCPUload];}
if (gUs==2){
[self drawCPUload];}
if (gUs==3){
[self drawBattCharge];}
if (gUs==4){
[self drawBPM];}
}
次に、表示が必要なメソッドに「gUs」を変更させます。それは正常に機能し、多くのコントロールがあるため、CPU の作業が大幅に削減されます。
しかし、その後、負荷が高い場合やディスプレイの更新が頻繁に行われる場合、前の呼び出しからの needDisplay が処理される前に別のメソッドが「gUs」を変更し、間違った描画につながることがあることがわかりました。
どうすればこれを回避できますか?