目前,我尝试同时加载大约 4 到 5 个不同的 webView,但是我得出的结论是,一次只能加载一个 loadRequest。虽然我已经为每个 webview 创建了自定义类,但 loadRequest 并没有被调用,而如果有另一个 webview 的 loadRequest 正在使用。
无论如何将这些调用保留在不同的线程中以使其工作或在调度机制中使用?只是想弄清楚是否有替代方案。
谢谢
目前,我尝试同时加载大约 4 到 5 个不同的 webView,但是我得出的结论是,一次只能加载一个 loadRequest。虽然我已经为每个 webview 创建了自定义类,但 loadRequest 并没有被调用,而如果有另一个 webview 的 loadRequest 正在使用。
无论如何将这些调用保留在不同的线程中以使其工作或在调度机制中使用?只是想弄清楚是否有替代方案。
谢谢
使用 NSUrlConnection 预加载数据,无线程
//for EACH url to load
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:tweet[@"profile_image_url"]]];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue] // one should ideally use a different queue here to free main thread and ONLY do the imageView.image setting in Main thread
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if(!error) {
//load webview! with Data maybe!
}
}];
由于您似乎只有 4 或 5 个 Web 视图,因此在调度队列中调用它们并不是那么低效。如果有 100 个请求,那么您需要考虑一些策略。
NSArray *myWebSites = [NSArray arrayWithObjects:@"www.cnn.com",@"www.fox.com",....,nil];
for(url in myWebsites){
dispatch_async(dispatch_get_global_queue, ^{
// get the data from the url.
// do the display in main queue
dispatch_async(dispatch_get_mainqueue, ^{
//load the web view;
}
}
}