- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我读了一段代码,它每秒检查数据并更新 UI。这听起来像我们通常使用 NSTimer scheduledtimerwithtimeinterval
所做的事情。但是这段代码是通过递归调用 dispatch_after
实现的,如下所示:
- (void) retriggerMethod {
... do stuff here, assuming you want to do it on first invocation ...
dispatch_after( ..., ^{
[self retriggerMethod];
});
}
dispatch_after recursion 和 NSTimer scheduledtimerwithtimeinterval 有什么区别?使用前者是否存在潜在风险?因为我认为当您使用它时,只要不结束此递归,调用堆栈就会增长。
最佳答案
NSTimer:
1. Need a NSRunloop.
2. Can repeat.
3. Can be invalid anytime if u want to cancel.
4. Can only run with delegate.
5. High level API.
调度后:
1. Can be run everywhere that u want with dispatch_queue.
2. Can't repeat by itself.
3. Can't be cancel.
4. It run as block.
5. GCD.
关于ios - dispatch_after 递归 vs NSTimer scheduledtimerwithtimeinterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34854747/
我有两个单独的计时器,用于在 0.25 秒时记录数据,另一个用于在 1 秒时记录位置详细信息,如下所示 self.hardBrakingTimer = [NSTimer scheduledTimer
我有一个奇怪的计时器问题。计时器在应用程序中更新良好。我正在展示代码。 //开始计时 #pragma mark- Timer - (void)startTimer { timer = [NST
我想使用 scheduledTimerWithTimeInterval 在一定时间内执行周期性任务,比如一小时。但是我如何在我的代码上实现。这是我的代码: timer = [NSTimer sched
我想在未来安排一个函数调用。我正在使用 Swift。 我想回调一个私有(private)方法并返回一个 Promise(来自 PromiseKit) 我见过的所有例子都用到了 NSTimer.sche
我想知道是否有一种更流畅、更轻便的方法来制作带循环的动画。 [NSTimer scheduledTimerWithTimeInterval:[NSTimeInterval] target:[targe
我为 Alert 创建了一个类级别的方法: @interface TestAlert @end + (void)showErrorAlert:(NSTimer *)message { .......
我通过 Web 服务将用户位置发送到服务器,在响应中我得到发送下一个位置的时间间隔。我正在使用以下调用使用定时器发送位置,但是当我得到不同的值时,定时器仍然使用旧值。我还尝试使计时器无效以设置新值,但
我想在后台运行一个计时器。所以我创建了一个单例。 问题是在设置的 5.0 秒后,它没有调用函数 timeEnded()。 Xcode建议在函数前面添加@Objc(像这样:@Objc func time
我检查了关于这个主题的现有帖子并用谷歌搜索了它,但我无法找出我的错误或使它对我有用。我在 ChessPlayer 类中有一个函数 iterativeDeepening()。说 15 秒后,我想停止函数
我有一个函数需要每隔 x 秒调用一次。开始时 x = 5 但每次调用此函数时 x 都需要递减一定数量。如果 x 不变,我知道该怎么做: override func didMoveToView(view
我一直在制作秒表。 启动、停止和暂停操作效果很好。 但是,当我点击两次开始操作时 time = NSTimer.scheduledTimerWithTimeInterval(1, target: se
我正在开发一款游戏,我想创建一个暂停菜单。这是我的代码: self.view?.paused = true 但是 NSTimer.scheduledTimerWithTimeInterval 仍在运行
如何停止我的计时器运行?不像暂停,而是停止。 import UIKit class LastManStandingViewController: UIViewController { @IBOu
在那段代码中,我有两个 NSLog 都表示 dict 的保留计数为 1。由于如果数组中有很多对象,计时器可能会在很长一段时间内触发,我可以保留给用户信息的字典吗?因为我猜它是自动释放的,而schedu
我在 A 类中,我想调用 B 类中的方法,我该怎么做。 NSTimer* timer=[NSTimer scheduledTimerWithTimeInterval:4 target:[A class
我需要每分钟运行一次的函数。所以我决定使用 NSTimer.scheduledTimerWithTimeInterval 函数 这是我的代码 override func viewWillAppear(
我创建了一个简单的 WatchApp 节拍器。我将 NSTimer 与 .scheduledTimerWithTimeInterval 一起使用,但出现错误 Extra Argument 'selec
我有以下代码行: changeColour = NSTimer.scheduledTimerWithTimeInterval(TIMES, target: self, selector: "chang
我目前是第一次学习 Swift,并且有些头疼,因为最新版本显然刚刚发布。 许多教程都在教学生如何使用 NSTimer.scheduledTimerWithTimeInterval,但它们显示的参数始终
我读了一段代码,它每秒检查数据并更新 UI。这听起来像我们通常使用 NSTimer scheduledtimerwithtimeinterval 所做的事情。但是这段代码是通过递归调用 dispatc
我是一名优秀的程序员,十分优秀!