2

iOS6で大きな問題が発生しています。

アプリの起動時にウェブページを表示する必要があります。これにはloadHTMLStringを使用します。iOS 6より前のすべてでは、すべてが期待どおりに機能しますが、iOS 6では、約1時間かかるようです。テキスト以外のものをロードするのに2分。すべての画像などの読み込みには2分ごとにかかるため、ページの読み込みには約8分かかります。これは、iOS5.1以下で非常に高速に動作します。

これが私の問題を説明するサイトで見つけた問題ですが、答えがありません:https ://devforums.apple.com/message/724010

私は本当にこれについての答えが必要です。

これだけを実行する空のアプリを作成すると、すべてが機能します。起動する前にネットワークを実行するアプリ内にこれを配置すると、問題が発生します。したがって、これを特定するのは非常に困難ですが、UIWebViewで取得できる限り、問題はbaseURLに関連していると思いますが、それは単なる感覚です。

4

2 に答える 2

1

UIWebViewは、メッセージがiOS5と6でわずかに異なります

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

loadHTMLString:baseURL:が呼び出されると、iOS 6のビューデリゲートに送信されますが、iOS5ではそうではありません。私のデリゲートメソッドは

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    [[UIApplication sharedApplication] openURL:[request URL]];
    return NO;
}

そして、空のベースURLが原因で、共有アプリケーションがbarfにロードされたようです。これはiOS6の新機能であるため、これが原因のようです。似たようなものがあるかもしれません。デリゲートメソッドで空のベースURLをチェックすると、問題が修正されました。きれいではありませんが、うまくいきました。

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if ( [@"file:///" isEqualToString:[[request URL] absoluteString]] ) {
        return YES;
    }

    [[UIApplication sharedApplication] openURL:[request URL]];
    return NO;
}
于 2012-10-26T21:28:01.350 に答える
0

これで問題が解決した理由はわかりませんが、問題は解決しました。

Webビューを呼び出した私のViewコントローラーは、他のアプリで再利用されていたため、静的ライブラリにありました。コードを静的ライブラリからアプリケーション自体に移動するだけで、アプリの動作が大幅に向上し、Webビューは期待どおりに機能します。iOS5とiOS6の間に違いはなくなりました。

しかし、このコードを追加することで、それは本当に大きな違いをもたらしました:

NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies]) {
    [storage deleteCookie:cookie];
}

私が言ったように、コードをライブラリとして持つのではなくアプリ自体に移動する理由を説明することはできません。上記のコードは機能しますが、Webviewのキャッシュ方法と関係があると確信しています。

于 2013-01-28T14:03:11.430 に答える