2012-10-03 197 views
0

我試圖在iphone應用程序中的循環內設置延遲。基本上我會有一個for循環與幾個動作,我想每個動作之間1秒延遲:延遲在for循環 - iPhone

for循環{動作1,延遲1秒,動作2,延遲1秒,動作3,延遲1秒}

我該如何編碼?

+2

使用語句sleep(1); –

+0

可能你想使用'[NSThread sleepForTimeInterval:(NSTimeInterval)]'? NSTimeInterval以秒爲單位。 – DanSkeel

回答

3
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]; 
} 
+0

我設法在調用(void)action2之前得到一個延遲,但是它不會返回for循環,然後延遲並調用(void)action3。如何在完成(void)action2等之後返回for循環? – user1716811

+0

更新!嘗試這個!!或者,如果你想使用睡眠(),請檢查這個http://stackoverflow.com/questions/2956175/when-i-really-need-to-use-nsthread-sleepfortimeinterval1 – Nina

0

這不涉及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]; 
}]; 

希望這有助於!如果您有任何問題,請告訴我。