今天Naville给我发来一条QQ,
在信息应用中编辑新信息的时候,收件人一栏如果使用系统自带的手写输入法,在输入一横中间加上一撇以后,信息应用必定闪退
无论是iPhone 6 Plus,亦或是iPhone 5s,只要系统是iOS 8版本以上,都会出现这个Bug
于是我果断去实验了一下,还真的会闪退。可以知道的是,写下来这个字应该是
(本来想直接打这个字 ud840udc87 的,结果WordPress也被这个字玩坏了,中文还真是厉害啊>ω</)分析如下
估计的原因如下,因为这个字是双字节Unicode字符,而短信程序要检查收件人是否开启了iMessage功能,需要拿收件人的length,但是
返回的结果却是2,于是,悲剧注定要发生了。可以想象发生了这样的事:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSCFConstantString substringFromIndex:]: Index SOME_INTEGER out of bounds; string length 2'
验证
找到另一个双字节Unicode汉字( ud840udc89 )
果然,也闪退了.
Device Log
Dec 5 20:17:38 ReportCrash[15071] <Notice>: Saved report to /var/mobile/Library/Logs/CrashReporter/MobileSMS_2014-12-05-201738_Ryza.ips
Dec 5 20:17:38 SpringBoard[6351] <Warning>: Application 'UIKitApplication:com.apple.MobileSMS[0xd78a]' crashed.
Crash Reporter