swift上的计时器不工作

swift上的计时器不工作,swift,nstimer,Swift,Nstimer,我有一个使用按钮的功能: @IBAction func btnSiguiente(_ sender: Any) { if indexImagenes == imagenes.count { indexImagenes = 0 } escaparate.image = NSImage(named: imagenes[indexImagenes]) indexImagenes += 1 } 我想让它与计时器一起工作: var playTimer =

我有一个使用按钮的功能:

@IBAction func btnSiguiente(_ sender: Any) {
    if indexImagenes == imagenes.count {
        indexImagenes = 0
    }
    escaparate.image = NSImage(named: imagenes[indexImagenes])
    indexImagenes += 1
}
我想让它与计时器一起工作:

 var playTimer = Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(autoplay), userInfo: nil, repeats: true)


func autoplay() {
    if indexImagenes == imagenes.count {
        indexImagenes = 0
    }
    escaparate.image = NSImage(named: imagenes[indexImagenes])
    indexImagenes += 1
}
但我在控制台中看到了这一点:

[\u SwiftValue autoplay]:发送到实例0x608000451C0的无法识别的选择器要解决此问题,请在所属类的实例完全初始化后初始化计时器

因此,只需给var playTimer一个默认值,如下所示:

var playerTimer:Timer? = nil
然后在“self”完全初始化后调用的某个函数中初始化计时器(例如,假设此代码位于viewController中,则类似viewDidLoad()):


本质上,只需确保“self”已完全初始化,然后再向其发送一个选择器来执行。

要解决此问题,请在所属类的实例完全初始化后初始化计时器

因此,只需给var playTimer一个默认值,如下所示:

var playerTimer:Timer? = nil
然后在“self”完全初始化后调用的某个函数中初始化计时器(例如,假设此代码位于viewController中,则类似viewDidLoad()):


基本上,只需在发送选择器执行之前确保“self”已完全初始化。

尝试
playTimer=Timer.scheduledTimer(时间间隔:5,目标:self,选择器:#选择器(自动播放),userInfo:nil,repeats:true)
创建计时器时,什么是
self
?尝试
playTimer=Timer.scheduledTimer(时间间隔:5,目标:self,选择器:#选择器(自动播放),userInfo:nil,repeats:true)
创建计时器时,什么是
self
?非常好!总是确保发送方法调用的对象完全实例化。非常好!总是确保发送方法调用的对象完全实例化。