我有一个非常简单的可可应用程序(不是 iphone),它由一个覆盖整个应用程序窗口的 WebView 实例组成。我注意到在某些页面上,该应用程序将消耗 100% 的核心之一。使用 Instruments 我可以看到几乎所有的时间都花在了 [NSView displayIfNeeded] 上。向下钻取调用树会导致 [WebHTMLView drawSingleRect]。在 Safari 中运行的同一页面运行良好,几乎没有 CPU 使用...
有人知道为什么会这样吗?
附加信息:
- 如果我调整应用程序窗口的大小(即使是很小的量),CPU 使用率也会下降。
- 运行 OS X 10.8.5
编辑:我发现的唯一“修复”是添加一个 NSTimer 调整窗口大小。如果有人知道在调整大小期间会“解决”这个问题会发生什么,我很想听听。
[NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(resizeToFixCPUUsage) userInfo:nil repeats:YES];
- (void)resizeToFixCPUUsage {
NSRect frame = [self.window frame];
frame.size.height -= 1;
[self.window setFrame:frame display:NO animate:NO];
frame.size.height += 1;
[self.window setFrame:frame display:NO animate:NO];
}
显示 CPU 使用率的仪器:
Web Inspector 显示绘制(应用使用 100% CPU 匹配实心紫色条):