正如標題所述,我有一個while循環,它將被執行,直到滿足某個條件,或者直到5秒鐘過去。iOS執行循環,直到特定時間的特定條件滿足爲止?
解決此問題的最佳方法是什麼?我已經看到一些關於NSTimer
的簡單教程,但在我看來,在NSTimer
內被觸發的選擇器將在指定的時間間隔後執行,無論如何。我只需要執行它,如果條件沒有得到滿足...
正如標題所述,我有一個while循環,它將被執行,直到滿足某個條件,或者直到5秒鐘過去。iOS執行循環,直到特定時間的特定條件滿足爲止?
解決此問題的最佳方法是什麼?我已經看到一些關於NSTimer
的簡單教程,但在我看來,在NSTimer
內被觸發的選擇器將在指定的時間間隔後執行,無論如何。我只需要執行它,如果條件沒有得到滿足...
只需創建一個NSTimer預定的動作存儲計時器,如果你達到你想達到的目的去激活這個計時器,以便它不會觸發該動作。
基本上是:
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(yourAction) userInfo:nil repeats:NO];
some code
//for deactivating the timer
[timer invalidate];
timer = nil;
你可以在主線程啓動的NSTimer(保證上面的代碼工作)與此:
[self performSelectorOnMainThread:@selector(startTimerMethod) withObject:someOrNoObject waitUntilDone:NO];
這是正確的答案。 –
我曾嘗試執行此操作,但沒有任何反應。可能是因爲我在後臺線程中調度計時器,我通過執行[self performSelectorInBackground:<#(SEL)#> withObject:<#(id)#>] – MegaManX
您是否存儲對此計時器的引用?或者只是發佈相關的代碼片段 – lukaswelte
不能你只需要使用一個while循環? – geminiCoder