iOS UIWebView內(nèi)存泄露問題

問題####

在使用UIWebView加載url的時候我們會發(fā)現(xiàn)內(nèi)存暴增,我測試了一下一個最簡單的webView加載url的頁面一般會增加30M左右的內(nèi)存。

那如何解決這個問題呢?網(wǎng)上你去查的時候一般就以下幾種方法:

    - (void)webViewDidFinishLoad:(UIWebView *)webView
    {
        [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];
        [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitDiskImageCacheEnabled"];//自己添加的,原文沒有提到。
        [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitOfflineWebApplicationCacheEnabled"];//自己添加的,,原文沒有提到。
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

    - (void)dealloc
    {
        [webView loadHTMLString:@"" baseURL:nil];
        [webView stopLoading];
        [webView removeFromSuperview];
        webView = nil;
        [[NSURLCache sharedURLCache] removeAllCachedResponses]; 
        [[NSURLCache sharedURLCache] setDiskCapacity:0]; 
        [[NSURLCache sharedURLCache] setMemoryCapacity:0]; 
        NSLog(@"釋放了webview");
    }

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 
          int cacheSizeMemory = 4*1024*1024; // 4MB int           

          cacheSizeDisk = 32*1024*1024; // 32MB 
          NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"];
          [NSURLCache setSharedURLCache:sharedCache]; 
    } 
    - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { 
          [[NSURLCache sharedURLCache] removeAllCachedResponses];
    } 

然而這些方法并沒有什么卵用,內(nèi)存基本上還都在那里,沒有被釋放。
這是UIWebView的問題,好像根本沒有辦法能解決。

如何解決####

iOS8 WebKit中更新的WKWebView控件,它很好的解決了UIWebView存在的內(nèi)存、加載速度等諸多問題。

具體的使用和介紹可以看WKWebView的新特性與使用

由于WKWebView是支持iOS8以上的,如果要適配iOS7怎么辦呢?
IMYWebView這個項目可以簡單的實現(xiàn)iOS7的時候無縫切換到UIWebView

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • UIWebView內(nèi)存消耗過多解決方法 在iOS開發(fā)時,使用UIWebView 來加載顯示一個網(wǎng)頁是比較常見的情況...
    husky_duang閱讀 17,089評論 0 3
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,228評論 4 61
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議。它實...
    香橙柚子閱讀 24,740評論 8 183
  • 問題一: 節(jié)選讀下來,大意都懂,細品略微吃力。而我的方向是寫古風的玄幻小說,綜合考慮下來,打算讀文言4成 ,舊小說...
    水金兔閱讀 214評論 1 0
  • Java通過程序中建立String類可以輕松管理字符串。字符串是一個或多個字符組成的連續(xù)序列,程序需要存儲的大量文...
    殘月雨紛紛閱讀 481評論 0 1

友情鏈接更多精彩內(nèi)容