0

彼、[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」を変更し、間違った描画につながることがあることがわかりました。

どうすればこれを回避できますか?

4

0 に答える 0