objective-c - cocoa WebView : Load-time when computer idles

标签 objective-c cocoa webview osx-mavericks load-time

我写了一个简单的 Mac OS 应用程序。该 View 仅包含一个隐藏的 WebView 和一个 NSTextView。在某个时间会解析 100 个 URL,一个接一个。一个 URL 被加载到 WebView 中,一些 DOM 树解析发生,冲洗并重复。

除了计算机空闲(无用户事件)时的加载时间存在一些重大差异外,一切正常。当我使用计算机时,加载 URL 大约需要 2 秒。当我有一段时间不使用计算机时,加载 URL 大约需要 1 分钟

当我在一段时间后回到计算机并在 TextView 中看到最后一个 URL 花费了大约一分钟时,下一个将在几秒钟内立即加载。所以它必须与系统上的用户事件有关。正确的?有人知道为什么吗?

我使用的是 OS X 10.9.4。

这是我加载 URL 的代码:

#pragma mark -

- (void)processNextUrl
{
    // No url, stop
    if (_processQueue.count == 0)
        return;

    // Process url
    NSString     *urlString = [_processQueue objectAtIndex:0];
    NSURL        *url       = [NSURL URLWithString:urlString];
    NSURLRequest *request   = [NSURLRequest requestWithURL:url];

    [[_webView mainFrame] loadRequest:request];
}

#pragma mark - WebFrameLoadDelegate

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
    // Page ready for parsing?
    if ([[sender mainFrame] isEqual:frame] == NO)
        return;

    // Append date, time and url to TextView
    NSString *url = [[[[frame dataSource] request] URL] absoluteString];
    [self logText:url];

    // Parser does some DOM parsing and outputs to TextView
    Parser *parser = [[Parser alloc] initWithWebFrame:frame delegate:self];
    [parser parse];
}

#pragma mark - ParserDelegate Methods

- (void)parser:(Parser *)parser didFinishParsingUrl:(NSString *)url
{
    [_processQueue removeObjectAtIndex:0];
    [self processNextUrl];
}

最佳答案

我敢打赌AppNap正在启动并耗尽您的资源进程。

您可能想在您的应用程序的 Finder 的获取信息窗口中禁用 AppNap - 当然是一个临时测试,看看我是否正确 - 或者只使用 NSProcessInfo 的 beginActivityWithOptions:reason:告诉系统该事件是用户发起的,不应限制该应用。

关于objective-c - cocoa WebView : Load-time when computer idles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25424930/

相关文章:

ios - 使用相机和相册

ios - Objective-C 在 IOS 中设置变量

objective-c - Cocoa - 如何将特定窗口从 StatusMenu 置于前台

Android 4.4 无需用户参与即可打印为 PDF

java - 加载 webview 应用程序时在顶部显示进度条

ios - Mac 和 iOS 之间的 NSData 结构

objective-c - 使用多个条件搜索字典数组

NSMenuItem 的 Cocoa 自定义 View

objective-c - Objective C 中的静默安装

android - 渲染更改时是否有 WebView 事件?