看板 MacDev 關於我們 聯絡資訊
※ 引述《zonble (zonble)》之銘言: : ※ 引述《angelyin (等待.微笑)》之銘言: : : detachNewThreadSelector:@selector(A:) toTarget:B withObject:C : : 想請問前輩A B C是代表什麼意思? : : 稍微研究了一下 : 假如原來的 code 是: : [myObj myMethodWithObject:myParameter]; : 要用 Thread 的話 : [NSThread detachNewThreadSelector:@selector(myMethodWithObject:) : toTarget:myObj : withObject:myParameter]; 謝謝這位前輩 我想在請問另外一個問題 performSelectorOnMainThread:@selector(D:) withObject:E waitUntilDone:F 1.請問上面這個method是指傳送message給main thread上的D嗎? 那 D是指要invoke的method E是指要傳給D的參數 F是boolen值 我看文件寫說 如果是YES就block目前的thread 如果是NO就立刻把這個method return 2.上述的理解有錯嗎?(雖然我講起來都覺得很抽象) 3.如果都沒錯 那為什麼要叫main thread執行D啊? 中途打斷一個thread的執行不是很怪嗎? 想要執行D為什麼不另外開一個thread? 謝謝^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.210.155
uranusjr:請愛用官網 http://tinyurl.com/yjeyz38 09/29 23:44
uranusjr:http://tinyurl.com/yd4fw2t 這個是 NSObject 09/29 23:45
uranusjr:不過你的理解沒錯 09/29 23:47
angelyin:我就是看了 http://tinyurl.com/yk8cb39 還是有點不懂^^" 09/29 23:51
angelyin:如果1和2的理解是對的~關於第3點又想不通... 09/29 23:53
angelyin:不知道有什麼情況是一定要呼叫main thread中途做別的事? 09/29 23:53
zonble:像是 UI 就需要在 main thread 控制 09/30 02:44
Blueshiva:所以在更新UI,例如進度列的時候就會用到? 09/30 02:55
zonble:比方說,你一邊用迴圈跑東西,一邊要有動畫效果的進度條 09/30 03:03
zonble:這樣就需要兩個 thread,要不程式卡在迴圈裡頭 09/30 03:04
zonble:像是什麼風火輪轉轉轉的效果就不會動 09/30 03:04
zonble:但是當你的迴圈跑到了一定的狀況,要把結果丟回給 UI 09/30 03:05
zonble:比方說要把轉轉轉停掉,而那個動畫是在 thread 裡頭 09/30 03:06
zonble:就需要叫 main thread 把轉轉轉停掉。 09/30 03:07
zonble:如果不想開 thread 還要有同樣的效果,就變成迴圈原本做 09/30 03:08
zonble:的事情,改用 run loop 來推動 09/30 03:08
zonble:每一輪 run loop 跑一點要做的事情 09/30 03:09
zonble:另外想到,如果 thread 做的事情最後會呼叫timer 09/30 03:15
zonble:也是丟回 main thread 做比較好。 09/30 03:15
zonble:而在 10.5 之前,像是在 thread 裡頭呼叫 DO 09/30 03:16
zonble:是會爆炸的…。 09/30 03:16