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

看板MacDev作者 (幽靈)時間9年前 (2015/10/06 15:42), 9年前編輯推噓0(008)
留言8則, 3人參與, 最新討論串1/1
各位大大好,小弟在寫一個程式, 當中會創建一個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://www.ptt.cc/bbs/MacDev/M.1444117331.A.D28.html ※ 編輯: yoll522 (203.64.91.67), 10/06/2015 15:42:32

10/06 17:08, , 1F
你有在scrollViewDidScroll的delegate做啥事嗎@_@
10/06 17:08, 1F

10/06 17:18, , 2F
沒有,我在那兩個元件皆沒有用到delegate@@
10/06 17:18, 2F

10/06 19:59, , 3F
你可能把Stream以Default Mode排在Main thread的RunLoop裡
10/06 19:59, 3F

10/06 20:00, , 4F
所以當有UI Touch Event的時候 就會被main runloop忽略
10/06 20:00, 4F

10/06 20:02, , 5F
你可以試試NSRunLoopCommonModes
10/06 20:02, 5F

10/06 20:02, , 6F
或是乾脆直接把它排去其他thread的runloop
10/06 20:02, 6F

10/08 10:46, , 7F
原來如此,感謝樓上的大大,我的確是用currentRunLoop
10/08 10:46, 7F

10/08 10:46, , 8F
來跑,並沒想到會造成這問題,感謝
10/08 10:46, 8F
文章代碼(AID): #1M4tjJqe (MacDev)
文章代碼(AID): #1M4tjJqe (MacDev)