作者yoll522 (幽灵)
看板MacDev
标题[问题] 滑动手势造成程式阻塞
时间Tue Oct 6 15:42:07 2015
各位大大好,小弟在写一个程式,
当中会创建一个socket去接收server传来的数据,
并把接收到的封包处理好後,用NSLog的方式列出来
因为server会快速且不间段的传送封包,所以我的Log几乎不会停止
且我程式中有使用到UITextView跟UIScrollView这两个元件
但在测试途中却发现,
只要用手势的方式稍微卷动这两个元件,程式就不会在Log出讯息
本来以为只是刚好LAG一下,但如果我在卷动过程中手指停住不动
这时Log就完全不会在列出讯息,直到我的手放开为止
但是放开後整个封包就爆炸了,变成了一坨烂掉的封包
( 因Server传来的封包,皆是0xAAAA开头,
但是爆炸後每封数据接不是0xAAAA作为开头 )
虽然不晓得为什麽上述情形会造成封包爆炸
但还是想请问各位高手,为何只要在用手势卷动Scroll时,
NSLog的部分就不会在运作,或者感觉像是程式被被block住了
是我哪部分没有处理好吗@@?
这是我程式大概的流程:
http://imgur.com/ISLoPGb
还请各位高手指导,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.64.91.67
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1444117331.A.D28.html
※ 编辑: yoll522 (203.64.91.67), 10/06/2015 15:42:32
1F:→ LFimi: 你有在scrollViewDidScroll的delegate做啥事吗@_@ 10/06 17:08
2F:→ yoll522: 没有,我在那两个元件皆没有用到delegate@@ 10/06 17:18
3F:→ Esvent: 你可能把Stream以Default Mode排在Main thread的RunLoop里 10/06 19:59
4F:→ Esvent: 所以当有UI Touch Event的时候 就会被main runloop忽略 10/06 20:00
5F:→ Esvent: 你可以试试NSRunLoopCommonModes 10/06 20:02
6F:→ Esvent: 或是乾脆直接把它排去其他thread的runloop 10/06 20:02
7F:→ yoll522: 原来如此,感谢楼上的大大,我的确是用currentRunLoop 10/08 10:46
8F:→ yoll522: 来跑,并没想到会造成这问题,感谢 10/08 10:46