他,我刚刚意识到[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”,导致错误的绘图。
我该如何避免这种情况?