今天在处理友盟上的bug统计时,发现了一个奇怪的问题:
[JQIndicatorView appWillEnterBackground] crash
很快在工程里面找到了对应的代码,可是这个代码没有看出任何问题。
打好断点,并在工程中勾选address sanitizer和zombie objects,让程序运行到相应代码,然后按home键退到后台,果然!问题重现了。
可是,打的断点没有相应,说明代码没运行到就挂了。
查看log,发现有这么一行信息提示:
[UIKeyboardLayoutStar release]: message sent to deallocated instance XXX(XXX是地址,我没贴上来)。
这个就很奇怪了,工程里面没有这样的代码,全局搜索都没有。找度娘,说是有用到
库DurexKit,这个库是swizzling了NSArray,NSDictionary的方法,我们的代码没有用到这个库,但是我们自己写了一些类似的代码,用以处理数据越界导致的程序crash,我试着把这些类从工程删掉,crash问题就没有了。
问题是解决了,但是网上始终没找到这个问题的具体原因,可能就是这些类在swizzlingNSArray等类的时候引起的一些问题吧。