美文网首页工作博客
Debug记录:iOS10在Appdelete的didFinis

Debug记录:iOS10在Appdelete的didFinis

作者: abs_ | 来源:发表于2019-03-01 11:10 被阅读2次

问题如题
首先得到的报错信息如下:

WX20190301-104814@2x.png

这个报错的意思是向一个已经释放的对象发送消息的问题。解决这类问题的做法从内存地址解析得到该地址的堆栈信息。

  1. 确保开启了Zombie Objects 和 malloc track


    WX20190301-104614@2x.png
  2. 打开活动监视器找到你的项目所在pid(进程id) ,一般输入项目名就能找到你的pid

  3. 打开终端,输入:

    # 6220代表你的pid 
    # 0x110cec090是内存地址
    sudo malloc_history 6220 0x110cec090
    

    很不幸,我没有通过这种方式找到有用的信息


    WX20190301-105149@2x.png

    然后我开始观察:

    -[UIWindowLayer retain]: message sent to deallocated instance 0x110cec090

    很容易想到可能是某个window被提前释放导致问题的

于是我重新运行,在Appdelegate方法内打印所有window的信息,我得到的信息如下:

WX20190301-110839@2x.png

从这些信息可以看到 WXWindow 的内存地址是0x110dc7490
随后的崩溃信息如下:

**-[UIWindowLayer retain]: message sent to deallocated instance 0x110dc7490

问题已经很明显了,就是WXWindow类这个对象的提前释放导致出现崩溃的。这是weex调试时在顶部的一个小蓝条。很遗憾。weex框架内部代码无法修改。

最后验证:我移除了与weex调试相关的代码之后,发现一切正常,最后复原代码重新测试,发现又出现了崩溃。于是我认为我的结论是正确的。

相关文章

网友评论

    本文标题:Debug记录:iOS10在Appdelete的didFinis

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