【发布时间】:2015-03-18 09:16:43
【问题描述】:
我的应用中有一个UIWebView,
-(void)viewDidLaod{
NSURL *url = [NSURL URLWithString:@"some url string"];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadRevalidatingCacheData timeoutInterval:30.0];
myWbView.delegate = self;
[myWebView loadRequest:request];
if ([timer isValid]) {
[timer invalidate];
}else{
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(addSec:) userInfo:nil repeats:YES];
//counting seconds
}
-(void)webViewDidFinishLoad:(UIWebView *)webView{
if (webView.isloading){
NSLog(@"LOADING");//it takes 5-8 seconds in average keep logging this
}else{
NSLog(@"FINISH");//since the request started,8-15 seconds later this is logged out
}
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
NSLog(@"LOAD FAIL: %@",error);
}
这是我正在尝试加载的 webpage,
我将 webview 控制器放在 pageViewController 中,每次我滑动到下一页时,都会启动一个新的加载请求。
(当刷出视图时,我确实会停止任何未完成的加载,因此它不会阻塞网络踏板)
有时我会收到一些错误消息,例如:
作为一个应用程序开发的新手,我完全不知道我的代码有什么问题,是某个线程卡住了,还是使用 JavaScript/HTML5 的网页影响了速度?
我研究了使用 webview 加载内容页面的 Flipboard 应用程序(iOS7 版本),它会在用户点击任何帖子后立即响应。即使UIWebView的加载速度通常很慢,也有可能获得更快的性能。
任何建议的指南链接/我应该知道的背景知识将不胜感激。
PS: 因为另一个更好的东西WKWebView 仅在 iOS8 和更高版本中支持
(在我的应用程序中WKWebView 的加载速度与UIWebView 相同,但在HTML5 test site 处得分更高),
我仍然需要 iOS7 的 UIWebView。
【问题讨论】:
-
检查您的网速...或者您的网页很重...提供您要添加的网页的网址...
-
网页在贴里,我试了3G/Wifi/4G,速度差异很小(1-2秒)
-
使用 GCD 或 performselectorinbackground 将请求移动到另一个线程,...否则它会阻塞您的 UI 线程。还有一点,UIWebView 对象很重,在你的页面上加载它可能需要一些时间
-
UIWebView 请求不应该在主线程中,因为它来自 UIKit?
-
问题来自网站本身。
UIWebView is not Safari,它希望内容更轻.. 我刚刚在桌面上的 Chrome 上打开了网站,加载需要一些时间.. 尝试撕掉内容,然后加载.. 如果可能的话。
标签: ios objective-c uiwebview wkwebview request-timed-out