如何在延遲0.5秒後調用此方法- (void)displayView:(UIView *)view arg:(UILabel *)label { }
?Call Objective-C方法
我試過[self performSelector:@selector(displayView:) withObject:view afterDelay:.5];
,但只通過查看作爲參數。
如何將兩個參數傳遞給延遲0.5秒的方法?
如何在延遲0.5秒後調用此方法- (void)displayView:(UIView *)view arg:(UILabel *)label { }
?Call Objective-C方法
我試過[self performSelector:@selector(displayView:) withObject:view afterDelay:.5];
,但只通過查看作爲參數。
如何將兩個參數傳遞給延遲0.5秒的方法?
使用延遲的塊調用:
主線程:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self displayView:view arg:label];
});
後臺線程:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self displayView:view arg:label];
});
'dispatch_get_current_queue'已棄用。我試過這個。 –
@亨利哈里斯:謝謝,修正。 – Regexident
AHHHH我花了半小時試圖找出更新的方式來做到這一點!非常感謝! –
- (id)performSelector:(SEL)aSelector
withObject:(id)anObject
withObject:(id)anotherObject
[self performSelector:@selector(displayView:arg:)
withObject:myView
withObject:myLabel];
但我真的建議你GCD去:
另一種選擇是dispatch_after,這將需要一個塊,並在一定的時間排隊了。只要你需要,你可以否定這一計時器停止進程
myTimer = [NSTimer scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(displayViewWitharg:)
userInfo:dict
repeats:NO];
// where dict is NSDictioary with key-value pair, which contains your parameters which you want to pass.
在這裏:
double delayInSeconds = 5.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self displayView:myView arg:myLabel];
});
另一種方式是使用NSTimer。
希望這會幫助你
我之前嘗試過'dispatch_after',並在'dispatch_get_main_queue();'上遇到了棄用警告。我相信。我不知道你做這件事的方式是否正確,但我可以嘗試。謝謝。 :) –
我已經添加了3個不同的例子來在單獨的線程上運行一個進程。你可以根據你的可行性選擇其中的任何一種。 – Mrunal
@Mrunal'performSelector:withObject:withObject'不在單獨的線程中運行 - 它是基於循環的(詳情請參閱NSRunLoop文檔)。另外,它沒有提供指定OP要求的.5秒延遲的方法。您的'NSTimer'示例具有誤導性。 'NSTimer'實例不能用自定義簽名調用方法;簽名必須是' - (void)methodName:(NSTimer *)timer'。 – jlehr
這與Xcode根本無關。 – 2013-06-18 16:35:32
順便說一下,將參數包含在字典中,然後繁榮,你從N個參數中取得了1個參數。 – 2013-06-18 16:35:54
@ H2CO3對不起。好點子。我可能會嘗試。謝謝。 –