类中的Swift 3计时器未触发

时间:2017-10-06 18:26:32

标签: swift timer

我有一个班级:

class GameManager {...

在其中我有这个功能:

func startGame() {

        msgTimer = Timer(timeInterval: 0.5, target: self, selector: #selector(typeMessage(_:)), userInfo: nil, repeats: true)

}

和它调用的选择器:

@objc func typeMessage(_ sender:Timer) {

        if textCount > strInitText.characters.count {
            let strThisChar = strInitText[strInitText.index(strInitText.startIndex, offsetBy: textCount)]
            strDisplayText = strDisplayText + String(strThisChar)
            print(strDisplayText)
        }

    }

但是选择器永远不会被调用。

enter image description here

2 个答案:

答案 0 :(得分:4)

这个计时器需要在运行循环中调度(通过 - [NSRunLoop addTimer:])才能触发。

并从主线程中调用它,如下所示:

rw = ((s/(2*pi*r))*360)*(pi/180) # rotation angle

但是,我建议您在此实例中使用scheduledTimer删除此步骤:

  

创建一个计时器,并在默认模式下在当前运行循环上安排它。

答案 1 :(得分:4)

更改

msgTimer = Timer(timeInterval: 0.5, target: self, selector: #selector(typeMessage(_:)), userInfo: nil, repeats: true)

msgTimer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(typeMessage(_:)), userInfo: nil, repeats: true)