- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我看到的所有关于在 Swift 中使用“NSTimer.scheduledTimerWithTimeInterval”的示例都显示使用“target: self”参数,但不幸的是,这在 Swift Playgrounds 中不能直接工作。
Playground execution failed: <EXPR>:42:13: error: use of unresolved
identifier 'self'
target: self,
这是导致错误的上面引用的示例:
func printFrom1To1000() {
for counter in 0...1000 {
var a = counter
}
}
var timer = NSTimer.scheduledTimerWithTimeInterval(0,
target: self,
selector: Selector("printFrom1To1000"),
userInfo: nil,
repeats: false
)
timer.fire()
最佳答案
这些天你真的不应该使用 NSTimer
。它会消耗大量资源,导致不必要的电池消耗,而且 API 本身会产生难看的代码。
改用dispatch_after()
:
dispatch_after(0, dispatch_get_main_queue()) { () -> Void in
for counter in 0...1000 {
var b = counter
}
}
当然,由于计时器会在 playground 执行完之后触发,因此您需要等效于 timer.fire()
来强制代码立即执行,而不是在 0 秒延迟后执行。这是它的工作原理:
let printFrom1To1000 = { () -> Void in
for counter in 0...1000 {
var b = counter
}
}
dispatch_after(0, dispatch_get_main_queue(), printFrom1To1000)
printFrom1To1000()
关于swift - Swift Playground 中的 NSTimer.scheduledTimerWithTimeInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27262688/
我有两个单独的计时器,用于在 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
我是一名优秀的程序员,十分优秀!