美文网首页
针对内存泄露-开发容易被忽略的例子-by:西瓜

针对内存泄露-开发容易被忽略的例子-by:西瓜

作者: 不够果断是种癌 | 来源:发表于2018-06-07 16:15 被阅读145次

    楼主最近发现了一个问题,就是在使用block的时候。只要使用到了对象就会报错一个错误"Block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior Insert 'self->"。网上也查阅了很多资料,最开始楼主也是用的网上解决方法,看似解决了问题,然而并没有解决。最近楼主感觉有点问题,然后做了测试,才发现网上的解决方法是错的,正确的解决方法楼主会写这篇文章里面。

    针对网上这个现象,楼主在此调侃一下,有些人看文章看博客,只要觉得对方好,就直接开启CV模式,不管自己有没有看懂。这样也就导致现在的一个现象,去百度的时候,网上有时候错误答案一堆,并且还描述一模一样。回答的也一模一样。可笑。这些很显然就是CV模式的人。

    楼主想说一句,要想解决bug,最好的方法是实际定位到错误的原因,并经过测试,而不是只想一想就好了,要对自己说出的话负责。

    楼主在这里举个例子:

    很多人不已为然,直接点了Fix,于是变成下方这样:

    很多人都以为这样就解决问题了,没有警告了。又或者这样写,好像也没有警告哦,好像也没有报错哦:

    但是毫无疑问是错的,这样写虽然没有问题,但是实际上已经造成了循环引用。已经相互持有了。大家也可以仔细分析分析自己写一个测试。就知道答案了。

    正确的做法是进行弱引用:

    做法一:

    做法二:

    针对循环引用 可以使用:FBMemoryProfiler 来进行检测。

    相关文章

      网友评论

          本文标题:针对内存泄露-开发容易被忽略的例子-by:西瓜

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