相关疑难解决方法(0)

Swift中的@selector()?

我正在尝试创建一个NSTimerin 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())

但没有任何作用,我在参考文献中找不到解决方案.

selector nstimer swift

647
推荐指数
14
解决办法
30万
查看次数

dispatch_after - Swift中的GCD?

我从Apple那里浏览了iBook,找不到任何定义:

有人可以解释结构dispatch_after吗?

dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block: dispatch_block_t?#>)
Run Code Online (Sandbox Code Playgroud)

grand-central-dispatch ios swift

548
推荐指数
12
解决办法
24万
查看次数

如何将当前时间作为日期时间

刚开始操场.我正在尝试创建一个简单的应用程序.

我已经创建了一个这样的日期对象:

var date = NSDate()
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得当前时间?在其他语言中,我可以这样做:

var hour = date.hour
Run Code Online (Sandbox Code Playgroud)

但我找不到任何类似的属性/方法.我找到了一种方法dateWithCalendarFormat.我应该用吗?如果是这样,怎么样?

datetime swift

242
推荐指数
14
解决办法
38万
查看次数

如何在Swift中创建延迟?

我想暂时停止我的应用程序.换句话说,我希望我的应用程序执行代码,但在某个时刻,暂停4秒,然后继续执行其余代码.我怎样才能做到这一点?

我正在使用Swift.

xcode delay swift

230
推荐指数
16
解决办法
26万
查看次数

计时器不在Swift 3.0游乐场中运行

使用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为我的Teststruct 调用方法之后添加就可以了.非常感谢那些回答的人,特别是@AkshayYaduvanshi(他的评论指向我CFRunLoopRun())和@JoshCaswell(他的答案提出了我的计时器只适用于运行循环的事实).

cocoa nstimer swift swift-playground

8
推荐指数
2
解决办法
2770
查看次数

如何使多次启​​动的NSTimer无效

我在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 ios swift

0
推荐指数
1
解决办法
1717
查看次数

如何在给定时间后激活一个功能?

我想在声音播放完成后激活一个功能.我认为需要包含NSTimer,但我不确定如何实现它.如果你能给我一些有用的代码,那将会很有帮助.

audio nstimer ios swift

-4
推荐指数
1
解决办法
58
查看次数