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