看板 MacDev 關於我們 聯絡資訊
各位大大好,小弟在寫一個程式, 當中會創建一個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
LFimi: 你有在scrollViewDidScroll的delegate做啥事嗎@_@ 10/06 17:08
yoll522: 沒有,我在那兩個元件皆沒有用到delegate@@ 10/06 17:18
Esvent: 你可能把Stream以Default Mode排在Main thread的RunLoop裡 10/06 19:59
Esvent: 所以當有UI Touch Event的時候 就會被main runloop忽略 10/06 20:00
Esvent: 你可以試試NSRunLoopCommonModes 10/06 20:02
Esvent: 或是乾脆直接把它排去其他thread的runloop 10/06 20:02
yoll522: 原來如此,感謝樓上的大大,我的確是用currentRunLoop 10/08 10:46
yoll522: 來跑,並沒想到會造成這問題,感謝 10/08 10:46