- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我检查了关于这个主题的现有帖子并用谷歌搜索了它,但我无法找出我的错误或使它对我有用。我在 ChessPlayer 类中有一个函数 iterativeDeepening()。说 15 秒后,我想停止函数内的进一步迭代。在下面的代码中,永远不会调用函数“flagSetter”。如果我使用 NSTimer.fire() 函数会立即调用,而不是在 15 秒后调用。我尝试将 flagSetter 函数放在 iterativeDeepening() 之前或之后。这两种情况都不起作用。我做错了什么?
class ChessPlayer {
var timeoutFlag = false
//Code
func iterativeDeepening() {
***//variables and constants***
let timer = NSTimer.scheduledTimerWithTimeInterval(15.0, target: self, selector: #selector(self.flagSetter), userInfo: nil, repeats: false)
***while minDepth <= maxDepth
{
// Loop iteration code
if timeoutFlag { break out of loop }
}***
}
@objc func flagSetter(timer: NSTimer) {
print("flag changed to true")
self.timeoutFlag = true
timer.invalidate()
}
}
要求:
最佳答案
我是 Objective-c 的爱好者,但从未在我的项目中使用过 Swift。谷歌搜索 NSTimer Swift,我发现了以下正确实现 NSTimer 的步骤。
我们需要定义我们的 NSTimer。我们需要的第一个变量是一个名为 NSTimer 类型的定时器变量。我们这样做:
var timer = NSTimer()
启动 NSTimer 定时器:
timer = NSTimer.scheduledTimerWithTimeInterval(15.0, target:self, selector:#selector(ChessPlayer.flagSetter(_:)), userInfo: nil, repeats: false)
并且您的方法 flagSetter 应该定义为:
func flagSetter(timer: NSTimer) {
print("flag changed to true")
self.timeoutFlag = true
timer.invalidate()
}
现在这肯定会起作用,因为我已经制作了我的第一个应用程序,只是为了这个问题,是用 Swift 制作的。检查我如何放置选择器。顺便说一句,你对警告是正确的。
如果您需要有关选择器的更多信息,请查看此线程:@selector() in Swift?
关于ios - 选择器未从 scheduledTimerWithTimeInterval 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36732400/
我有两个单独的计时器,用于在 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
我是一名优秀的程序员,十分优秀!