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

  • 相关阅读:
    关于Netty4.x中文教程系列更新进度的说明和道歉
    Netty4.x中文教程系列(四) ChannelHandler
    Netty4.x中文教程系列(三) Hello World !详解
    Netty4.x中文教程系列(二) Hello World !
    Netty4.x中文教程系列(一) 目录及概述
    【推荐】HTML5 UI框架 推荐
    【转载】【JQuery学习】jQuery插件开发
    前端与后端的数据交互(jquery ajax+python flask)
    【JS教程32】ajax
    【JS教程31】json
  • 原文地址:https://www.cnblogs.com/xiaowen-chen/p/5364589.html
Copyright © 2011-2022 走看看