SpriteKit 中带有 Swift 的 NSTimer 能够构建但崩溃

NSTimer with Swift in SpriteKit able to build but crashes

我正在尝试创建一个新的 NSTimer 对象来简单地将我的计数器增加 1 秒(以计算我的游戏的生命周期)现在我已经看到了关于如何去做的演示和示例,并且已经做了同样的事情事情,但该项目继续失败。有什么建议吗?
这是错误消息: 无法识别的选择器发送到实例 0x7a83c7d0

import SpriteKit


var timerObject = NSTimer()
var count = 0
let timer = SKLabelNode(text: "0")


class GameScene: SKScene , SKPhysicsContactDelegate {
    override func didMoveToView(view: SKView) {

    timerObject = NSTimer.scheduledTimerWithTimeInterval( 1 , target: self  , selector: Selector("result"), userInfo: nil, repeats: true)

    func result(){
         count++
         timer.text = String(count)

    }

我也这样写了函数"result",但还是崩溃了

func result() {
    count+= 0
    timer.text = "\(count)"
}

您的 NSTimer 回调签名错误。试试这个:

func result(aTimer: NSTimer!) {
    count+= 0
    timer.text = "\(count)"
}

我相信您还需要将选择器传递为 "result:":

timerObject = NSTimer.scheduledTimerWithTimeInterval( 1 , target: self  , selector: "result:", userInfo: nil, repeats: true)

我为所有遇到同样问题的人提出了答案,我遇到了错误消息:无法识别的选择器发送到实例 0x7a83c7d0 好吧,解决方案实际上非常简单,我已经在 viewDidLoad 中初始化了我的 timerObject 对象更具体地说,错误指出方法结果不是 gameScene 的一部分 只需将您选择的选择器功能移动到 viewDidLoad 下方,它应该可以正常工作

class GameScene: SKScene , SKPhysicsContactDelegate {


var timer = NSTimer()
var count = 0
let lableTimer = SKLabelNode(text: "0")

override func didMoveToView(view: SKView) {

     timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "result", userInfo: nil, repeats: true)

    lableTimer.position = timerPosition
    lableTimer.fontSize = 40


    self.addChild(lableTimer)

 }


func result(){
    count++
    lableTimer.text = String(count)
}

此外,我已将所有初始变量移入 GameScene class 而不是顶部。