解决UIWebView内存占用过高

iOS8以上使用WKWebView。。需要支持iOS7,这就必须要UIWebview和WKWebview的混合使用,这里讲一下怎么解决UIWebView内存问题

首先你在APPDelagate,改变缓存策略,使他到达你设定的值后,进行强制内存回收,这样做还有一个好处就是提高网页加载速度

- (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)webViewDidFinishLoad:(UIWebView *)webView {

[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];

[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitDiskImageCacheEnabled"];

[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitOfflineWebApplicationCacheEnabled"];

[[NSUserDefaults standardUserDefaults] synchronize];

}

然后在页面消失的时候,强制把webview的delegate设置为nil,并清除缓存

-(void)dealloc {

self.webView.delegate = nil;

[[NSURLCache sharedURLCache] removeAllCachedResponses];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于iOS的UIWebView内存泄露的问题,以前也碰到过这个问题,解决方法就是设置NSURLCache大小。因为...
    a乾坤大挪移a阅读 5,502评论 2 1
  • 1、改变 UITextField 占位文字 颜色和去掉底部白框 [_userName setValue:[UICo...
    i_MT阅读 4,695评论 0 2
  • 一、初始化(省略) 二、加载数据的三种方式: 1.-(void)loadRequest:(NSURLRequest...
    1d2c9b77769c阅读 8,999评论 0 3
  • 看着窗外滂沱大雨,心里不禁有些失望,下了一夜的大雨居然还没有停息,反而越下越大了。心里倒也没有多少焦躁之情,可能这...
    在水一方含阅读 2,490评论 2 2
  • 如果问我哪里充满了最浓厚日本的味道,那么我第一个推的便是京都 来到京都,首先会想到浓厚的抹茶味,京都著名的抹茶有伊...
    MavisK阅读 4,612评论 0 1