8
例如,在GKScore
的reportScoreWithCompletionHandler
(documentation),假設你叫在哪個線程中調用iOS完成處理程序塊?
[score reportScoreWithCompletionHandler:^(NSError *error) {
// do some stuff that may be thread-unsafe
}];
在哪個線程將完成處理程序被調用:主線程,同一個線程reportScoreWithCompletionHandler
是所謂的,或不同的線程(大概是實際分數報告完成的線程)?
換句話說,在完成處理程序中完成的工作是否必須是線程安全的(就像在哪個線程中執行什麼線程無關)?
有趣。這是否與運行循環完美交錯? (也就是說,當完成處理程序被調用時,調度的任務是否會在下次運行循環迭代之前被調用,或者是否會有一些延遲?) – 2011-03-11 00:21:10
我認爲主線程runloop將處理排隊的塊作爲正常事件的一部分處理週期。所以它應該「很快」發生,但與所有與runloop相關的事情一樣,時序不保證。 – mlaster 2011-03-11 03:38:59