事情起因
项目上线有一段时间了,公司本着两周迭代一次的原则,优化用户及运营同事反馈的问题。我是独立负责整个iOS端应用,所以整个项目的策划、完成都是我全权负责,目前应用已步入正规,也达到了盈利的效果。然而有一天一个在前方战斗的BD同事说有一个医生出现闪退现象,我问他是在那个界面怎么操作发生的,他说就是在开方时操作多了会出现闪退,然而别的用户却不会有这样的情况。
事情分析
事情解决
经过一番研究个人觉得这是8.4系统的Bug,在第三次点击的时候发生了内存泄漏,而在别的系统下没毛病,代码没有一点毛病,那唯一解释就是指针还在,对象跑了(所谓的僵尸对象),所以在调用这个控件上找不到这个对象了,为什么这么说了,因为我还有如图可以证明,也是崩溃,但是错误信息变了,对象变为NSCfString,甚至有时候还变为NSData
4:解决办法:把项目中UITextField分类的dealloc方法注释就行了,
5:运行继续一顿乱点,发现没毛病了,问题在这就解决了,下一秒发生什么谁也不知道,咔嚓闪退了,一脸懵逼中.....,任重而道远啊。于是重现之前的操作,发现在点击某个XIB文件时,发生了崩溃,,卧槽啊,又是一个8.4的坑,,,代码很简单就是一个列表展示,,还有输入框(UITextField控件),然而还是点击UITextField时崩溃,这就奇怪了,最后在论坛看到说8.4系统用xib构建应用时不要关联delegate,而应该在awakeFromNib方法中调用delegate属性。最后按照这个方法完美解决问题。