由黑魔法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标记

你可能感兴趣的:(由黑魔法swizzle造成的crash)