Debug记录:iOS10在Appdelete的didFinishLaunch方法内弹出alertView,alertView消失后,程序崩溃

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

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

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


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

  3. 打开终端,输入:

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

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


    然后我开始观察:

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

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

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

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

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

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

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

你可能感兴趣的:(Debug记录:iOS10在Appdelete的didFinishLaunch方法内弹出alertView,alertView消失后,程序崩溃)