iOS线程死锁
在chat view的开发过程中,添加了“混合标签添加与显示”,app出现发送图片会出现卡死的情况,但过了大约30~40 second后会恢复正常。
问题分析:
因为没有任何报错与提示,只能根据表面现象慢慢分析,经过多次测试与观察得出以下规律:
(1)发送表情与文本不会发生该情况,只有发送图片才会发生app界面卡死的情况。(主线程阻塞,与大文件上传有关)
(2)app卡死一定时间后会恢复正常,但时间不定,大约范围在30~40 second。(主线程解除阻塞,与系统某些机制有关)
(3)当界面中有gif图时才会发生,界面中全是移动端本地图片是能顺利发送。(与gif下载有关)
根据上述现象,可以总结为:
主线程阻塞,过后因通信通信失败而阻塞解除。
因为与gif图的下载有关,于是分析gif的下载实现,gif图的下载由以下代码实现。
|
|

在iOS chat view开发中,发送图片时出现卡死问题,经过分析发现与gif图下载有关,特别是使用`dataWithContentsOfURL`导致主线程阻塞。CPU分析确认为线程死锁,符合死锁四条件。解决办法是避免在主线程进行可能导致阻塞的操作,例如使用NSURLConnection的同步请求下载图片。
最低0.47元/天 解锁文章
802

被折叠的 条评论
为什么被折叠?



