我正在尋找一個Objective-C函數來調用一個函數來以指定的時間間隔(2到5秒)更新UI。一些可以使用的(大致)這樣的僞代碼:iOS(客觀C)版本的ualarm()
array[String]; // already populated
function1(){
if (array.hasMoreElements()){
call function2() in x seconds;
}
}
void function2(){
update gui with next string in the array;
function1();
}
我根本沒法用x秒睡眠(),因爲GUI會變得反應遲鈍;並且我無法創建新線程來更新GUI,因爲iOS UI元素不是線程安全的。我已經研究過ualarm(),但它很老很粗糙,有人告訴我在iOS庫中有類似的實用工具;但是我一直無法找到它。
這絕對有效,但定時器在所有權和失效方面有一些尖銳的角落。它們最適合長時間運行,重複的特定時間間隔任務。對於一般的延遲和排空排隊,我通常堅持使用'performSelector',因爲它很難弄錯。 –
是的,可能定時器比簡單地調用'performSelector'更加微妙,但是在「指定的時間間隔」(如OP所說的)的UI更新是一個「長時間運行,重複的特定時間間隔」任務說過)。我完全同意,對於一般的延遲,調用'performSelector'要簡單得多,但在這種情況下,我認爲'NSTimer'更適合這個問題 – Saphrosit