我試圖在iphone應用程序中的循環內設置延遲。基本上我會有一個for循環與幾個動作,我想每個動作之間1秒延遲:延遲在for循環 - iPhone
for循環{動作1,延遲1秒,動作2,延遲1秒,動作3,延遲1秒}
我該如何編碼?
我試圖在iphone應用程序中的循環內設置延遲。基本上我會有一個for循環與幾個動作,我想每個動作之間1秒延遲:延遲在for循環 - iPhone
for循環{動作1,延遲1秒,動作2,延遲1秒,動作3,延遲1秒}
我該如何編碼?
for (loop) {
[self action1];
[self performSelector:@selector(action2) withObject:nil afterDelay:1.0];
[self performSelector:@selector(action3) withObject:nil afterDelay:1.0];
}
希望這是你在找什麼!
編輯
試試這個。它會完成了當前運行的方法,並移動到下一個。
for (loop) {
[self performSelectorOnMainThread:@selector(action1) withObject:nil waitUntilDone:YES];
[self performSelectorOnMainThread:@selector(action2) withObject:nil waitUntilDone:YES];
[self performSelectorOnMainThread:@selector(action3) withObject:nil waitUntilDone:YES];
}
我設法在調用(void)action2之前得到一個延遲,但是它不會返回for循環,然後延遲並調用(void)action3。如何在完成(void)action2等之後返回for循環? – user1716811
更新!嘗試這個!!或者,如果你想使用睡眠(),請檢查這個http://stackoverflow.com/questions/2956175/when-i-really-need-to-use-nsthread-sleepfortimeinterval1 – Nina
這不涉及for循環,但將採取行動列表並執行它們以延長時間。
NSArray *selectorStrings = @[ @"action1", @"action2", @"action3" ];
[selectorStrings enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
SEL selector = NSSelectorFromString((NSString *)obj);
NSTimeInterval delay = (NSTimeInterval)idx;
[self performSelector:selector withObjet:nil afterDelay:delay];
}];
希望這有助於!如果您有任何問題,請告訴我。
使用語句sleep(1); –
可能你想使用'[NSThread sleepForTimeInterval:(NSTimeInterval)]'? NSTimeInterval以秒爲單位。 – DanSkeel