[问题] 疑似滑动手势造成程式阻塞

楼主: yoll522 (幽灵)   2015-10-06 15:42:07
各位大大好,小弟在写一个程式,
当中会创建一个socket去接收server传来的数据,
并把接收到的封包处理好后,用NSLog的方式列出来
因为server会快速且不间段的传送封包,所以我的Log几乎不会停止
且我程式中有使用到UITextView跟UIScrollView这两个元件
但在测试途中却发现,
只要用手势的方式稍微卷动这两个元件,程式就不会在Log出讯息
本来以为只是刚好LAG一下,但如果我在卷动过程中手指停住不动
这时Log就完全不会在列出讯息,直到我的手放开为止
但是放开后整个封包就爆炸了,变成了一坨烂掉的封包
( 因Server传来的封包,皆是0xAAAA开头,
但是爆炸后每封数据接不是0xAAAA作为开头 )
虽然不晓得为什么上述情形会造成封包爆炸
但还是想请问各位高手,为何只要在用手势卷动Scroll时,
NSLog的部分就不会在运作,或者感觉像是程式被被block住了
是我哪部分没有处理好吗@@?
这是我程式大概的流程: http://imgur.com/ISLoPGb
还请各位高手指导,谢谢
作者: LFimi   2015-10-06 17:08:00
你有在scrollViewDidScroll的delegate做啥事吗@_@
楼主: yoll522 (幽灵)   2015-10-06 17:18:00
没有,我在那两个元件皆没有用到delegate@@
作者: Esvent (Esvent)   2015-10-06 19:59:00
你可能把Stream以Default Mode排在Main thread的RunLoop里所以当有UI Touch Event的时候 就会被main runloop忽略你可以试试NSRunLoopCommonModes或是干脆直接把它排去其他thread的runloop
楼主: yoll522 (幽灵)   2015-10-08 10:46:00
原来如此,感谢楼上的大大,我的确是用currentRunLoop来跑,并没想到会造成这问题,感谢

Links booklink

Contact Us: admin [ a t ] ucptt.com