延迟执行iOS应用

Posted

技术标签:

【中文标题】延迟执行iOS应用【英文标题】:Delay execution iOS app 【发布时间】:2013-06-06 18:35:25 【问题描述】:

我正在寻找一种简单直接的方法来延迟 ios 应用程序中多个帧的执行,这可能吗?

【问题讨论】:

不清楚您在问什么,但也许NSTimer scheduledTimerWithTimeInterval 适合您的需求? 请注意您的术语,当您谈论“延迟多个”时,我认为您可能来自另一个平台。你的意思是延迟一段时间。 【参考方案1】:

根据您正在做的事情的复杂性,这个小 sn-p 就足够了:

double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void)
    //code to be executed on the main queue after delay
);

否则,您可以查看NSTimer 来安排一些要执行的代码。您甚至可以重复一次或多次。

例如可以这样使用:

[NSTimer scheduledTimerWithTimeInterval:5.0 
                                 target:self 
                               selector:@selector(myMethod) 
                               userInfo:nil 
                                repeats:NO];

如需了解更多关于如何使用它的信息,请查看this post,当然,请查看documentation。

【讨论】:

【参考方案2】:

如果你指的是某个恒定的时间,通常的方法是使用 NSTimer 在未来的某个时间触发,或者使用 dispatch_after(),它可以将一个块分派到主队列或未来某个时间的背景。

【讨论】:

【参考方案3】:

大卫是正确的。这是我如何使用 NSTimer 的一些代码。

-(void)startAnimating 
    [NSTimer scheduledTimerWithTimeInterval:.3 target:self selector:@selector(animateFirstSlide) userInfo:nil repeats:NO];
    self.pageTurner = [NSTimer scheduledTimerWithTimeInterval:6.0 target:self selector:@selector(turnPages) userInfo:nil repeats:YES];


-(void)animateFirstSlide 
    [self animateSlideAtIndex:0];


-(void)stopPageTurner 
    [self.pageTurner invalidate];

【讨论】:

谢谢大家的回复,我现在有很多可以尝试的。【参考方案4】:

您可以使用[NSTimer scheduledTimerWithTimeInterval: target: selector:] 方法,也可以使用内置方法wait(time_in_seconds);。 希望这会对你有所帮助。

【讨论】:

以上是关于延迟执行iOS应用的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发延迟执行一个方法的方法

iOS: 零误差或极小误差的定时执行或延迟执行?

iOS 延迟1.5s 执行方法

PHP延迟执行函数

iOS 中 延迟操作四种方式

当延迟执行变得困难时,如何分析应用程序?