美文网首页iOS学习零与壹相依为命iOS开发
使用HandyJSON导致的内存泄漏问题相关解决方法

使用HandyJSON导致的内存泄漏问题相关解决方法

作者: 残无殇 | 来源:发表于2017-12-27 15:25 被阅读17次

在移动开发中,与服务器打交道是不可避免的,从服务器拿到的接口数据最终都会被我们解析成模型,现在比较常见的数据传输格式是json格式,对json格式的解析可以使用原生的解析方式,也可以使用第三方的,我们的项目中使用的是阿里开源的一个swift编写的解析框架--HandyJSON。

在使用过程中,使用instruments的Leak Checks工具对内存泄漏进行检测时发现了这个框架导致了不少的内存泄漏,如图1-1:


1-1 修复内存泄漏之前.png

这张图是在APP进入首页并将数据加载完毕时截取的,可以看到,HandyJSON一共导致了28个内存泄漏,如果把整个APP运行一遍,估计内存泄漏的个数会很多很多。

这是由于UnsafeMutableRawPointer没有释放导致的,在HandyJSON的GitHub上也有解决方法点击前往,解决方法如下:

在Leak Checks工具中显示了内存泄漏的了类名(Measuable)与方法名(_getBridgedPropertyList),我们找到HandyJSON中的这个类和方法,在里面进行释放UnsafeMutableRawPointer就好了,在方法中加上图1-2中的红框中的代码即可:

1-2 解决方法.png

添加完代码之后,我们重新检测内存泄漏的情况,发现如图1-3所示:

1-3 内存泄漏解决之后.png

同样是进入首页并将数据加载完毕,我们发现,关于HandyJSON导致的内存泄漏已经没有了。

相关文章

  • 使用HandyJSON导致的内存泄漏问题相关解决方法

    在移动开发中,与服务器打交道是不可避免的,从服务器拿到的接口数据最终都会被我们解析成模型,现在比较常见的数据传输格...

  • 解决NSTimer、CADisplaylink的内存泄漏

    我们在NSTimer或者CADisplayLink的时候,如果使用不当,可能导致内存泄漏问题,至于内存泄漏的原因,...

  • 动态分配内存的危险(浅)

    1、内存泄漏。原因:代码中的错误导致。2、内存碎片。原因:动态分配内存时内存使用不当导致的。 内存泄漏:使用new...

  • Android基础面试知识02-内存泄漏

    1. 什么是内存泄漏,内存泄漏会导致什么问题? 指一个对象不再使用,本应该被回收,但由于某些原因导致对象无法回收,...

  • 谈谈 LeakCanary 原理 --标准答案

    内存泄漏传统意义上的内存泄漏是至忘记手动释放内存,导致未释放的内存不可使用的现象。 jvm 的内存泄漏jvm的内存...

  • iOS 内存泄漏

    内存泄漏是由对象使用内存,但却没让系统回收内存而导致的。如果不检查这种情况,内存泄漏就会导致应用变慢或者崩溃。 原...

  • Javascript中常见的内存泄漏

    内存泄漏:内存泄漏指由于错误或疏忽导致程序未能释放已经不再使用的内存,内存泄漏并非内存在物理上的消失,而是应用程序...

  • 一些笔试题

    java内存相关 内存泄漏 在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并...

  • UIWebView内存泄漏问题

    iOS开发中,使用JSContext有时会导致内存泄漏问题,比如: _context[@"method"] = s...

  • 内存检测问题

    1.如何检测内存问题 内存泄漏:在基于Java的运行中,内存泄漏是一种编程错误,它会导致应用程序对已经不需要再使用...

网友评论

    本文标题:使用HandyJSON导致的内存泄漏问题相关解决方法

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