[問題] 疑似滑動手勢造成程式阻塞

作者: 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