草庐IT

iOS UIWebView 泄露

coder 2024-01-12 原文

class MyViewController: UIViewController {
     @IBOutlet weak var webView: UIWebView?
     override func viewDidLoad() {
    super.viewDidLoad()

    let url = NSURL(string: urlString)
    let request = NSURLRequest(URL: url!)
    SVProgressHUD.show()

    webView?.loadRequest(request)
    webView?.scrollView.header = MJRefreshNormalHeader(refreshingBlock: {

      [weak self] in
      if let strongSelf = self {
        strongSelf.webView?.reload()
      }})   }
     override func viewDidDisappear(animated: Bool) {
    super.viewDidDisappear(animated) 

    SVProgressHUD.dismiss()   }    }

extension MyViewController: UIWebViewDelegate {
     func webViewDidFinishLoad(webView: UIWebView) {
    webView.scrollView.header.endRefreshing()
    SVProgressHUD.dismiss()   }       func webView(webView: UIWebView, didFailLoadWithError error: NSError?) {
    webView.scrollView.header.endRefreshing()
    SVProgressHUD.dismiss()   }    }

View Controller 由导航 Controller 推送,当我弹出它时,我得到了泄漏。在 instrument.Leak 我看到了这些。

#

Leaked Object   #   Address Size    Responsible Library Responsible Frame NSMutableArray    1   0x137a6ddb0 48 Bytes    UIKit   -[_UIKeyboardTextSelectionGestureController init]
_UIKeyboardTextSelectionController  1   0x137a6e800 96 Bytes    UIKit   -[UIWebSelectionAssistant addNonEditableForceTextSelectionGestureRecognizersToView:]
_UIKeyboardBasedNonEditableTextSelectionGestureController   1   0x137a6dcd0 160 Bytes   UIKit   -[UIWebSelectionAssistant addNonEditableForceTextSelectionGestureRecognizersToView:]

#

我确定 webView、myViewController 被延迟了,但是当弹出 myViewController 时,4M 增加了并且没有释放。请帮忙,谢谢。

列表项

最佳答案

根据 an answer posted here ,有一个解决方法,如果您将 configuration.selectionGranularity 设置为 WKSelectionGranularityCharacter,泄漏就会停止:

let config = WKWebViewConfiguration()
config.selectionGranularity = .character //WKSelectionGranularityCharacter
let myWebview = WKWebview(frame: frame, configuration: config)

This worked for me, but then, when selecting text, there was no selection rectangle in the webview.对于您的情况,这可能是也可能不是可行的解决方法。

编辑 我刚刚注意到您的问题是针对 UIWebView 的,而不是针对 WKWebView 的。看起来你不能在 UIWebView 上设置它。我暂时留下这个答案,因为 WKWebView 的人用谷歌搜索这个内存泄漏可能会找到这个线程......

关于iOS UIWebView 泄露,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32688401/

有关iOS UIWebView 泄露的更多相关文章

  1. Ruby 泄露的对象被 RubyVm::Env 引用 - 2

    我正在跟踪我们的应用程序(ruby2.1)中的内存泄漏问题。我正在使用这两种技术:ObjectSpace.dump_all将所有对象转储到JSON流,然后进行离线分析。我使用的第二种技术是使用ObjectSpace.reachable_objects_from进行实时分析。在这两种方式中,我发现我泄漏的对象被一个对象RubyVM::Env引用。任何人都可以向我解释什么是RubyVM::Env。如何删除这些引用? 最佳答案 RubyVM::Env是一个包含变量引用的内部ruby​​类。这是我的测试:require'objspace'a

  2. ThreadLocal的内存泄露问题 - 2

    ThreadLocal的内部实现在每一个线程Thread对象中,都维护了一个ThreadLocalMap对象。ThreadLocalMap中又维护了一个kv形式的Entry对象,key指向了当前ThreadLocal对象,value就是我们实际在ThreadLocal中存储的值。注意,这里的Entry中的key存放是ThreadLocal的弱引用。实现指的是强引用,虚线指的是弱引用。其实际上,ThreaLocal本身是不存储值的,我们在使用其对应的set、get方法时,都是操作的其对应的ThreadLocalMap对象。为什么会出现内存泄露?从上述可以看到,在Entry中的key存储的Thre

  3. CTFHub | SVN泄露 - 2

    0x00前言        CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套writeup,降低CTF学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。                0x01题目描述SVN泄露:        当开发人员使用SVN进行版本控制,对站点自动部署。如果配置不当,可能会将.svn文件夹直接部署到线上环境。这就引起了SVN泄露漏洞。网页显示内容        Flag在服务端旧版本的源代码中                0x02解题过程    此题使用kali-linux系统完成,因为使用win

  4. windows - 以加密形式存储文本并在 powershell 脚本中使用而不向其他用户泄露? - 2

    我想加密我想在不同的PowerShell脚本中使用的文本,而不损害其安全性,因为其他用户将使用包含该文本的脚本。基本上,我想向所有人隐藏该文本,并在不对使用该特定文本的所有PowerShell脚本造成任何麻烦的情况下使用它。文本可以存储在文件中,以便在不同的脚本中使用。我尝试过一些基本的东西,比如:$text=Read-Host"Enterthetext"-AsSecureString$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($text)$Plaintext=[System.Runtime.In

  5. python - 注册表句柄泄露? - 2

    我们正在运行一个Python脚本(使用多线程)在基于Amazon-EC2的WindowsServer2008机器上做一些工作。当机器启动时,我可以看到它开始执行Python脚本,然后我开始在事件日志中看到如下消息:Windowsdetectedyourregistryfileisstillinusebyotherapplicationsorservices.Thefilewillbeunloadednow.Theapplicationsorservicesthatholdyourregistryfilemaynotfunctionproperlyafterwards.DETAIL-19

  6. 拒绝“内鬼式”数据泄露,安全内控如何构建? - 2

    近年来,数据泄露的案例屡见不鲜,产生的危害举不胜举。根据IdentifyTheftResearchCenter的数据显示,与2021年同期相比,2022年第一季度实际报告的数据泄露事件数量增加了14%,达到404起。国内,因数据泄露而受到法律制裁的案件也层出不穷。可以说,对于一些重要基础行业系统和一些信息化程度较高的大中型企业来说,内网安全和数据内控已经成为其信息安全建设的重中之重。近日,【网安新视界】第二季开讲,极盾科技解决方案负责人龚磊从数据安全内控的现状及挑战出发,分享了数据安全内控体系的构建思路以及实战案例。企业数据安全内控现状及挑战数据安全内控的重要性已经毋庸置疑,那么现在企业的数据

  7. SSL/TLS协议信息泄露漏洞(CVE-2016-2183)修复方法 - 2

    前言:关于SSL/TLS协议信息泄露漏洞(CVE-2016-2183)的处理方法,网上教程一大堆。我以windows操作系统为例,浅谈一下我对这个漏洞修复的理解。一、win7操作系统1、打开控制面板打开网络和Internet2、打开Internet选项3、选择高级4、下滑选项找到TLS只勾选使用TLS1.25、win+R输入gpedit.msc打开组策略编辑器6、依次选择计算机配置管理模板网络SSL配置设置并双击打开7、点击已启用8、将原有字符删除后将下列字符替换到SSL密码套件的输入框中TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDH

  8. 【AI绘画】NovelAI泄露版本地安装全过程 - 2

    关于AI画画这个系列已经开了个头,前面已经简单的介绍了stable-diffusion的一些效果和简单的使用方法。这几天NovelAI模型泄露了。那就凑巧了,就以这个模型为例。完整的介绍一下stable-diffusion-webui本地安装方法几乎是从零开始说起(除了不教操作系统安装)。WebUI就是stable-diffusion的可视化版本!本地安装的好处是:无限出图不受限。作品尺度不受限。当然本地安装,相比直接用别人的网页版,难度也增加了。需要一定的硬件配置,N卡显存4G+要保证网络通畅,能高速外网那种最好。需要一些耐心,懂一些命令行。客观条件准备充分的情况下,根据这篇文章一步一步来,

  9. java - 在 RCP : Device is not tracking resource allocation 中泄露 - 2

    我已尝试让Sleak在我的IndigoRCP应用程序上运行。我已按照thisguide上的步骤操作.IE。我已经安装了插件,将swt工具插件添加到当前插件,添加了所需的插件,修改了跟踪选项,并使用folder.addView("org.eclipse.swt.tools.views.SleakView");View确实显示了,但当我尝试使用它时,我不断收到错误“设备未跟踪资源分配”。我已经在stackoverflow中尝试过有关此事的旧问题的答案,但没有成功Sleak(SWT&RCP):Deviceisnottrackingresourceallocation(eclipse4.3)S

  10. java - 如何在不泄露任何安全信息或堆栈跟踪的情况下记录错误? - 2

    当我在我的项目上运行FortifyScan时,我确实看到我正在使用LOGGER.error(e.getMessage(),e);它说这不是正确的方法,因为攻击者可能会访问此信息并从中获取系统信息并计划攻击。执行此操作的最佳方法是什么?(不影响安全性)? 最佳答案 在大多数情况下,这种推理坦率地说是荒谬的。您的LOGGER对象应该写入本地文件系统,如果远程攻击者可以访问您的文件系统,您的问题就会方式更大。适本地限制对您的日志文件的访问,然后记录您喜欢的内容。 关于java-如何在不泄露任何

随机推荐