由黑魔法swizzle造成的crash

swizzle NSArray的objectAtIndex,App就不会出现UIKeyboardLayoutStar

背景

公司新闻app,一个搜索输入框,键盘响应之后,按Home键,app进入后台,再返回前台的时候出现崩溃(iOS8 iphone5s)。
然而在6s iOS10上并不能复现。
用测试妹子的手机复现。控制台打印了下面信息

[UIKeyboardLayoutStar release]: message sent to deallocated instance

网上搜索,发现是由swizzle NSArray的objectAtIndex,造成的UIKeyboardLayoutStar release 问题
项目中确实加入runtime 对数组做可能的越界安全处理。

要么删除掉 swizzle NSArray 的objectAtIndex
要么对runtime文件分类的后边加上了-fno-objc-arc标记

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容