我正在尝试创建一个NSTimer
in Swift
但我遇到了一些麻烦.
NSTimer(timeInterval: 1, target: self, selector: test(), userInfo: nil, repeats: true)
Run Code Online (Sandbox Code Playgroud)
test()
是同一个类中的函数.
我在编辑器中收到错误:
找不到接受提供的参数的'init'的重载
当我改变selector: test()
到selector: nil
错误消失.
我试过了:
selector: test()
selector: test
selector: Selector(test())
但没有任何作用,我在参考文献中找不到解决方案.
我从Apple那里浏览了iBook,找不到任何定义:
有人可以解释结构dispatch_after
吗?
dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block: dispatch_block_t?#>)
Run Code Online (Sandbox Code Playgroud) 刚开始操场.我正在尝试创建一个简单的应用程序.
我已经创建了一个这样的日期对象:
var date = NSDate()
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得当前时间?在其他语言中,我可以这样做:
var hour = date.hour
Run Code Online (Sandbox Code Playgroud)
但我找不到任何类似的属性/方法.我找到了一种方法dateWithCalendarFormat
.我应该用吗?如果是这样,怎么样?
我想暂时停止我的应用程序.换句话说,我希望我的应用程序执行代码,但在某个时刻,暂停4秒,然后继续执行其余代码.我怎样才能做到这一点?
我正在使用Swift.
使用Swift 3.0在游乐场工作我有这个代码:
struct Test {
func run() {
var timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { timer in
print("pop")
}
}
}
let test = Test()
test.run()
Run Code Online (Sandbox Code Playgroud)
但没有什么是打印到控制台.我读过如何在Swift中使用NSTimer?我在网上的答案和教程中看到的计时器的大部分用法涉及一个选择器,所以我尝试了这个:
class Test {
func run() {
var timer = Timer.scheduledTimer(timeInterval: 0.4, target: self, selector: #selector(self.peep), userInfo: nil, repeats: false)
}
@objc func peep() {
print("peep")
}
}
let test = Test()
test.run()
Run Code Online (Sandbox Code Playgroud)
似乎仍然没有打印到控制台.如果我添加timer.fire()
,那么我得到控制台打印,但显然这违背了目的.我需要更改什么才能让计时器运行?
编辑:
所以CFRunLoopRun()
在我run
为我的Test
struct 调用方法之后添加就可以了.非常感谢那些回答的人,特别是@AkshayYaduvanshi(他的评论指向我CFRunLoopRun()
)和@JoshCaswell(他的答案提出了我的计时器只适用于运行循环的事实).
我在Swift做了一个练习项目来学习如何NSTimer
工作.启动计时器有一个按钮,一个按钮使计时器无效.当我点击每个按钮一次时,它工作正常.但是,当我多次点击开始计时器按钮时,我无法再使其无效.
这是我的代码:
class ViewController: UIViewController {
var counter = 0
var timer = NSTimer()
@IBOutlet weak var label: UILabel!
@IBAction func startTimerButtonTapped(sender: UIButton) {
timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: "update", userInfo: nil, repeats: true)
}
@IBAction func cancelTimerButtonTapped(sender: UIButton) {
timer.invalidate()
}
func update() {
++counter
label.text = "\(counter)"
}
}
Run Code Online (Sandbox Code Playgroud)
我已经看到了这些问题,但我无法从他们那里收到我的问题的答案(许多人是过去的Obj-C
pre-ARC
日子,其他人则是不同的问题):
我想在声音播放完成后激活一个功能.我认为需要包含NSTimer,但我不确定如何实现它.如果你能给我一些有用的代码,那将会很有帮助.