【问题标题】:How to call a method after delay by gcd in IOS? [duplicate]IOS中gcd延迟后如何调用方法? [复制]
【发布时间】:2015-12-20 19:39:26
【问题描述】:

有什么理由在 2 秒后调用一个方法,就像 performSelector:withObject:afterDelay: 一样?

【问题讨论】:

  • StackOverflow 有搜索功能。用它。谷歌也可以。
  • 是的,该链接解决了我的问题。谢谢。

标签: ios objective-c


【解决方案1】:

是的,你可以,

斯威夫特 3,斯威夫特 4

DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
    <# YOUR CODE HERE #>
}

斯威夫特 2

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(2.0 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { () -> Void in
        <# YOUR CODE HERE #>
}

目标 C

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    <# YOUR CODE HERE #>
});

【讨论】:

  • 虽然此代码块可能会回答 OP 的问题,但如果您解释此代码的工作原理,此答案会更有用。
  • 更多关于GCD的信息,参考链接:GCD
  • 感谢@mehulsojitra 此代码有效..
【解决方案2】:

是的,我们可以使用以下代码添加延迟来执行 GCD

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
 // Do you work over here
});

希望这会对你有所帮助。

【讨论】:

    【解决方案3】:
    dispatch_time_t deferTime = 2.0f;
    dispatch_after(deferTime, dispatch_get_main_queue(), ^{
    //call you method here
    });
    

    【讨论】:

      猜你喜欢
      • 2014-05-06
      • 1970-01-01
      • 2011-03-05
      • 2019-03-15
      • 2012-06-25
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      相关资源
      最近更新 更多