次のように 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% のケースで、「クラッシュ」または「メモリ不足」のシグナルで異常終了します。ファイルのロード時にデバイスがピーク メモリ使用量を処理する場合、メモリは通常の状態に戻ります。そうでない場合は、クラッシュします。