バックグラウンド プロセス内で複数の WKWebView ビューを作成し、すべての読み込みが完了したら、それらをメイン スレッドのビューに追加しようとしています。
各 WKWebView には JavaScript を介してレンダリングされたグラフが含まれているため、ロード時間は WKWebView ごとに約 1 秒かかるため、UI がブロックされないように処理をバックグラウンドにオフロードしようとしています。
これは、dispatch_get_main_queue がコメント アウトされている場合は正常に機能しますが、UI は 5 ~ 10 秒間ブロックされます。WKWebView の茶色の背景のみが表示され、Web ページのコンテンツは表示されません。
var webViews : [WKWebView] = []
var myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_async(myQueue, {
for i in 0...10
{
var url : NSURL? = NSURL(string:"http://google.com")
var req = NSURLRequest(URL:url!)
var webview = WKWebView(frame:CGRectMake(0, height * CGFloat(i), width, height))
webview.loadRequest(req)
webview.backgroundColor = UIColor.brownColor()
self.webViews.append(webview)
}
dispatch_async(dispatch_get_main_queue(),{
for item in self.webViews
{
self.view.addSubview(item)
}
});
});