微信团队分享:iOS版微信是如何防止特殊字符导致的炸群、APP崩溃的?
本文来自微信开发团队yanyang的技术分享。 1、引言 相信大家都遇到过一段特殊文本可以让iOS设备所有app闪退的经历。前段时间大年初一,又出现某个印度语字符引起iOS11系统奔溃,所幸iOS版微信客户端做了保护并没有引起太大问题(字符处理这类技术问题,其实曾在Android版微信上导致过严重的用户体验危机,感兴趣的可以看看文章《 微信团队披露:微信界面卡死超级bug“15。。。。”的来龙去脉 》)。 一般来说,特殊字符闪退是系统漏洞引起,只要更新系统就行。但大部分用户不愿意更新系统,而苹果也不一定第一时间解决问题。另外后台可以拦截恶意文本传递,但对于本地已下发的消息,后台没有办法让它删除。所以客户端还是要做些保护预防特殊字符闪退。 学习交流: - 即时通讯开发交流群: 320837163 [推荐] - 移动端IM开发入门文章:《 新手入门一篇就够:从零开发移动端IM 》 (本文同步发布于: http://www.52im.net/thread-1449-1-1.html ) 2、微信的思路 由于无法事先知道字符串里包含特殊字符,所以只能先让它排版/绘制,看看是否出现问题。做法是,在排版/绘制字符串前,先设置标记位,排版/绘制结束后,移除标记位。 一旦发现标记位存在,就意味着这字符串可能有问题,下次就不显示这个字符串: 这里有几个问题: 有可能在排版/绘制过程中