我有一個Web視圖,我試圖發佈大量數據,大約20 MB包含圖像。我將所有內容收集到一個字符串中,並將該字符串傳遞給webview。當字符串大小增加時出現問題。如果字符串的大小較小,它工作正常。當我將一個HTML字符串(巨大數據)加載到WebView上時,iPhone應用程序崩潰
我沒有通過調試來檢查控件是否到達WebViewDidFinishLoading委託方法。完全加載的字符串被上傳,但應用程序在幾秒鐘內崩潰。可能是什麼原因?請幫助我!我一直在敲頭腦袋。
我有一個Web視圖,我試圖發佈大量數據,大約20 MB包含圖像。我將所有內容收集到一個字符串中,並將該字符串傳遞給webview。當字符串大小增加時出現問題。如果字符串的大小較小,它工作正常。當我將一個HTML字符串(巨大數據)加載到WebView上時,iPhone應用程序崩潰
我沒有通過調試來檢查控件是否到達WebViewDidFinishLoading委託方法。完全加載的字符串被上傳,但應用程序在幾秒鐘內崩潰。可能是什麼原因?請幫助我!我一直在敲頭腦袋。
使用工具來分析您的應用程序。很有可能你的內存不夠用 - 對於iOS應用程序來說,20MB是相當多的,如果你是從部分開始構建字符串,那麼你可能會複製很多較小的字符串。瞭解您的應用程序在崩潰時使用了多少內存會很有用。
它可能是你用盡了太多的內存。 iOS會殺死這類應用程序。除了加載如此巨大的HTML之外,UIWebView
本身也有內存問題。它被指責佔用太多的內存,因爲它緩存數據(圖片等)
也許清空緩存可能會有所幫助。在didFinishLaunchingWithOptions
試試這個 -
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
[sharedCache release];
此外,當您收到內存警告做到這一點 -
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
[[NSURLCache sharedURLCache] removeAllCachedResponses];
}
你只是清除緩存以釋放內存。
如果這也不起作用,那麼我建議你想辦法將你的HTML分成多個頁面或其他方式來呈現數據。
你是否正在啓動應用程序?如果是這樣,它可能需要很長時間才能啓動應用程序,並導致看門狗定時器殺死該應用程序。
如何將單頁HTML分割成多頁html並將其加載到webview中,如果他想將HTML顯示爲單頁? – ViruMax 2014-09-26 05:24:44