iOS UIWebView内存泄露问题

作者: 齐滇大圣 | 来源:发表于2016-02-19 13:57 被阅读4846次

    问题####

    在使用UIWebView加载url的时候我们会发现内存暴增,我测试了一下一个最简单的webView加载url的页面一般会增加30M左右的内存。

    那如何解决这个问题呢?网上你去查的时候一般就以下几种方法:

        - (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];
        } 
    

    然而这些方法并没有什么卵用,内存基本上还都在那里,没有被释放。
    这是UIWebView的问题,好像根本没有办法能解决。

    如何解决####

    iOS8 WebKit中更新的WKWebView控件,它很好的解决了UIWebView存在的内存、加载速度等诸多问题。

    具体的使用和介绍可以看WKWebView的新特性与使用

    由于WKWebView是支持iOS8以上的,如果要适配iOS7怎么办呢?
    IMYWebView这个项目可以简单的实现iOS7的时候无缝切换到UIWebView

    相关文章

      网友评论

      本文标题:iOS UIWebView内存泄露问题

      本文链接:https://www.haomeiwen.com/subject/fufvkttx.html