OSX WebView非常缓慢且滞后

时间:2015-08-29 20:03:53

标签: macos performance webview

我想制作一个简单的全屏幕agar.io OS X应用程序(没有标题,只是游戏),使用加载agar.io网站的WebView ...但是它遇到了与Safari相比的严重滞后问题好的......比如游戏无法播放。

为此,我创建了一个没有故事板的简单可可应用程序(我尝试使用Xcode 6.4和7 beta,在Yosemite上使用最好的图形卡在最新的MacBook Pro上),在窗口中添加webview,连接webview出口。这是我的代码:

//  AppDelegate.swift

import Cocoa
import WebKit

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!

    @IBOutlet weak var webView: WebView!

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        // Insert code here to initialize your application
        let frame = NSScreen.mainScreen()?.frame
        window.setFrame(frame!, display: true)
        let url = NSURL(string : "http://www.agar.io")
        let request = NSURLRequest(URL: url!)
        webView.mainFrame.loadRequest(request)
        window.contentView = webView

    }

    func applicationWillTerminate(aNotification: NSNotification) {
        // Insert code here to tear down your application
    }


}

也许我错过了什么?

1 个答案:

答案 0 :(得分:4)

我终于找到了解决方案......即使用新的WKWebView类而不是旧的WebView类。 WKWebView类(几乎?)和safari一样快。

我的新代码几乎相同,除了我必须手动实例化WKWebView,因为UI编辑器中没有WKWebView对象,并且更改了直接应用于WKWebView对象的loadRequest(...):

import Cocoa
import WebKit

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!    

    var webView:WKWebView?

    func applicationDidFinishLaunching(aNotification: NSNotification) {

        let url = NSURL(string : "http://agar.io")
        let request = NSURLRequest(URL: url!)

        webView = WKWebView()
        webView!.loadRequest(request)

        window.contentView = webView

    }

    func applicationWillTerminate(aNotification: NSNotification) {
    // Insert code here to tear down your application
    }

}