st-*_*t-h 9 iphone performance uiwebview
我目前正在调试UIWebView以获取一些信息以提高性能(在服务器和iPhone上).我注意到在调用loadRequest之后:回调
- (void)webViewDidStartLoad:(UIWebView *)webView_
Run Code Online (Sandbox Code Playgroud)
被调用,但请求的每个参数都为null.
我使用以下声明:
- (void)webViewDidStartLoad:(UIWebView *)webView_{
NSLog(@"%@ \t Start Request: %@ \n absolute: %@ \n Method: %@ \n Parameters: %@ \n Port: %@ \n Query: %@ \n Header Fields: %@ \n HTTPBody: %@ \n HTTPBodyStream: %@", [NSDate date], [[webView_ request] mainDocumentURL], [[[webView_ request] mainDocumentURL] absoluteString], [[webView_ request] HTTPMethod], [[[webView_ request] mainDocumentURL] parameterString], [[[webView_ request] mainDocumentURL] port], [[[webView_ request] mainDocumentURL] query], [[webView_ request] allHTTPHeaderFields], [[webView_ request] HTTPBody], [[webView_ request] HTTPBodyStream]);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
2011-05-11 17:15:34 +0200 Start Request: (null)
absolute: (null)
Method: GET
Parameters: (null)
Port: (null)
Query: (null)
Header Fields: {
}
HTTPBody: (null)
HTTPBodyStream: (null)
Run Code Online (Sandbox Code Playgroud)
是否有任何解释这种行为或任何解决此问题的方法?
页面加载正常,但请求加载似乎需要大约30秒,我试图避免.
编辑:有关加载webview的一些其他信息.我正在调用一个方法,将webview添加到UIView并加载URL
UIWebView * web = [[UIWebView alloc] initWithFrame:CGRectMake(indent, topindent+indent, screenSize.width-2*indent, screenSize.height-2*indent-topindent)];
web.delegate = self;
[view addSubview:web];
NSURLRequest * someUrl = [NSURLRequest requestWithURL:[NSURL URLWithString:
@"some_URL"]];
[web loadRequest: someUrl];
Run Code Online (Sandbox Code Playgroud)
您看不到请求的原因是,在加载请求之前,不会分配 Web 视图的 request 属性。在所有重定向之后,这可能只显示实际显示的请求。如果您想要在重定向等之前的初始请求对象,请使用 ToddH 的答案。对于最终请求,您必须在 webViewDidFinishLoad 中检查它。