作者angelyin (等待.微笑)
看板MacDev
標題Re: [問題]關於Thread的基礎問題
時間Tue Sep 29 22:46:51 2009
※ 引述《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
3F:→ uranusjr:不過你的理解沒錯 09/29 23:47
5F:→ angelyin:如果1和2的理解是對的~關於第3點又想不通... 09/29 23:53
6F:→ angelyin:不知道有什麼情況是一定要呼叫main thread中途做別的事? 09/29 23:53
7F:推 zonble:像是 UI 就需要在 main thread 控制 09/30 02:44
8F:推 Blueshiva:所以在更新UI,例如進度列的時候就會用到? 09/30 02:55
9F:→ zonble:比方說,你一邊用迴圈跑東西,一邊要有動畫效果的進度條 09/30 03:03
10F:→ zonble:這樣就需要兩個 thread,要不程式卡在迴圈裡頭 09/30 03:04
11F:→ zonble:像是什麼風火輪轉轉轉的效果就不會動 09/30 03:04
12F:→ zonble:但是當你的迴圈跑到了一定的狀況,要把結果丟回給 UI 09/30 03:05
13F:→ zonble:比方說要把轉轉轉停掉,而那個動畫是在 thread 裡頭 09/30 03:06
14F:→ zonble:就需要叫 main thread 把轉轉轉停掉。 09/30 03:07
15F:→ zonble:如果不想開 thread 還要有同樣的效果,就變成迴圈原本做 09/30 03:08
16F:→ zonble:的事情,改用 run loop 來推動 09/30 03:08
17F:→ zonble:每一輪 run loop 跑一點要做的事情 09/30 03:09
18F:→ zonble:另外想到,如果 thread 做的事情最後會呼叫timer 09/30 03:15
19F:→ zonble:也是丟回 main thread 做比較好。 09/30 03:15
20F:→ zonble:而在 10.5 之前,像是在 thread 裡頭呼叫 DO 09/30 03:16
21F:→ zonble:是會爆炸的…。 09/30 03:16