zoukankan      html  css  js  c++  java
  • [VEProductDetailController scrollViewDidScroll:]: message sent to deallocated instance 0x130675200

    问题相关描述:在一个view里面嵌套一个scrollerview,然后在scrollerview中还嵌套一个webview来完成的页面逻辑

    用来实现的效果是scrollerview通过上拉来定位到webview,然后根据动态修改scrollerview是否可以滚动来控制webview的滚动处理

    在进入页面,然后返回的时候触发的崩溃信息

    [VEProductDetailController scrollViewDidScroll:]: message sent to deallocated instance 0x130675200

    为开启调试信息之前,什么提示都没有,然后上拉到webVIEW在返回就崩溃了,报了上面的信息

    于是一直纠结VEProductDetailController类中的scrollViewDidScroll方法的调用,都未能找到原因

    在网上有篇文章的报错跟这个很相似:可以参考下http://blog.csdn.net/smking/article/details/43775523

    开始尝试文章的方法:dealloc方法中把 scrollerview.delegate = nil 还是在崩溃

    不断尝试中想到了一个问题:webview中也是有scrollerview的,于是在dealloc中把scrollerview里面嵌套的webview的代理也变为空,问题得到了解决

    从提示信息中,根本没有想到问题会出现在webview上,一直都在想着VEProductDetailController这个类中的scrollerview的代理,从提示信息也很难想到这个问题

    总结:

    uikit里的的scrollerview方法感觉处理还是不是很全面,回调的时候,即使代理已经是销毁了的,还需要自己手动把代理变为空,

    不过这个问题在ios9以上没发现问题,只在ios8版本上会出现这个问题,ios7版本就没试过了

    应该是代理对象提前销毁了,但是scrollerview还没来得及销毁,方法scrollViewDidScroll的调用触发代理对象,这时候代理对象已经被销毁了,代理对象地址还记录在scrollerview的属性中,触发crash.

    解决方案是:

    在dealloc方法中,把用到的系统的scrollerview的代理都变为nil

  • 相关阅读:
    .NET XmlNavigator with Namespace
    编程要素
    【FOJ】1962 新击鼓传花游戏
    【POJ】1389 Area of Simple Polygons
    【POJ】2482 Stars in Your Window
    【HDU】3265 Posters
    【HDU】1199 Color the Ball
    【HDU】3642 Get The Treasury
    【HDU】4027 Can you answer these queries?
    【HDU】1542 Atlantis
  • 原文地址:https://www.cnblogs.com/xiaowen-chen/p/5364589.html
Copyright © 2011-2022 走看看