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