2

次のように webView 経由で .rtf ファイル (2.4 MB) を読み込もうとしています:

 NSURL *docURL = [NSURL fileURLWithPath:docPath];
NSData *data = [NSData dataWithContentsOfURL:docURL];
NSString *mimeType = //receiving proper mime type here
[webView loadData:data MIMEType:mimeType textEncodingName:@"utf-8" baseURL:docURL];

このようなファイルをロードすると、アプリがクラッシュするまでメモリが増加します。Instruments によると、コントローラーと webView 自体を含む webView の割り当てが完全に解除された後でも、メモリの増加は続きます。アプリケーションの別の場所にいて、他のアプリ機能を使用すると、.RTF ファイルを参照し続けているかのように、メモリが増加します。

コントローラーを閉じる/閉じるときに、WebViewの割り当てを解除するためにすべてのことも行います。つまり: mainWebview.delegate = nil; [mainWebview stopLoading]; 、[mainWebview removeFromSuperview]; 、[mainWebview リリース]; . (次のことを試みても: [mainWebview loadHTMLString:@"" baseURL:nil]; )

私が楽器で見たもの: ここに画像の説明を入力

誰にもアイデアはありますか?ありがとう。

編集: Safari、Chrome、Mercury ブラウザーでいくつかの大きな .RTF ファイル (700 Kb - 2.4 Mb) をテストしました。シミュレーターとデバイスの両方で、どこでも同じことが起こります。WebKitのバグだと思います。

一般的な状況: ブラウザーは、この種のファイルを処理するために大量のメモリを使用します。90% のケースで、「クラッシュ」または「メモリ不足」のシグナルで異常終了します。ファイルのロード時にデバイスがピーク メモリ使用量を処理する場合、メモリは通常の状態に戻ります。そうでない場合は、クラッシュします。

4

1 に答える 1

1

また、を使用する際のメモリ管理に関連するいくつかの問題がありましたUIWebView私の場合、Webビューにデータをロードする方法によって、動作が大きく変化することがわかりました。あなたの場合、私には解決策がありませんが、私の経験に基づいて、多分以下を使用します:

NSURLRequest *req = [NSURLRequest requestWithURL:urlToYourRTFFile];
[webView loadRequest:req];

違いを生む可能性があります

于 2012-09-19T11:59:23.230 に答える