前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >当iOS的webView加载Html页面之后

当iOS的webView加载Html页面之后

作者头像
谦谦君子修罗刀
发布2018-05-02 10:35:30
1.4K0
发布2018-05-02 10:35:30
举报
文章被收录于专栏:谦谦君子修罗刀

写到webView这块,硬生生堵了好久。现将问题记录如下。

问题一:加载webView之后浏览网页,有时程序会莫名其妙奔溃,查看内存居然高达上百兆。查阅网上资料发现是因为Html里的js 导致的内存泄漏,每次打开一个连接就会把“WebKitCacheModelPreferenceKey”设置成1。 解决方法: 在webView的代理方法中写下如下语句,当然别忘记设置代理。

代码语言:javascript
复制
- (void)webViewDidFinishLoad:(UIWebView *)webView { 
[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"]; 
}

该方法虽然不能完全解决这个问题,但是内存占用率会显著降低。 NSUserDefaultsstandardUserDefaults用来记录下永久保留的数据非常方便,不需要读写文件,而是保留到一个NSDictionary字典里,由系统保存到文件里,系统会保存到该应用下的/Library/Preferences/gongcheng.plist文件中。

问题二:隐藏html页面的广告 解决:在浏览器中取出需要隐藏的class或id的名字。依旧在以上的代理方法中

代码语言:javascript
复制
 [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('要隐藏的内容')[0].style.display = 'none'"];
    
    [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('要隐藏的内容').hidden = true"];

问题三:禁止用户点击页面中的超链接

代码语言:javascript
复制
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    // 判断是否点击链接
    if (navigationType == UIWebViewNavigationTypeLinkClicked) {
        return NO;
    }
    else
    {
        return YES;
    }
}

问题四:在升级了Xcode8之后,就会出现一些日志警告。 解决:product->Scheme - > Edit Scheme -> Arguments->Environment Variables加上 OS_ACTIVITY_MODE,值为disable。

代码语言:javascript
复制
```
Class PLBuildVersion is implemented in both /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x1214e1998) and /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x121306d38). One of the two will be used. Which one is undefined.
```
然后很无奈地配置了plist文件,结果当然是无效的。又听说要去target的Background Modes配置后台权限,但是结果还是一样。我只能说这个警告实在是太执着了。期望有大神帮忙解决。感谢!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.11.15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档