繁体   English   中英

Swift- NSTimer崩溃的应用程序

[英]Swift- NSTimer crashing app

在Xcode中,我有这个:

import UIKit
import AVFoundation
import Foundation

var position = 0
var gameTimer = NSTimer()

class ViewController: UIViewController {


        @IBAction func button(sender: AnyObject) {

            gameTimer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: "runTimedCode:", userInfo: nil, repeats: true)

            func runTimedCode() {

                position = Int(arc4random_uniform(11))


            }}}

当我运行此应用程序时,它崩溃并返回错误: Thread 1: signal SIGABRT.

我已经在没有NSTimer的情况下运行了脚本,它运行得很好。
我也使用和不使用冒号来运行它,并且返回相同的结果。

两个问题:

  • func runTimedCode()放在@IBAction button()的范围@IBAction button() 选择器/目标方法必须在类的顶层。

  • 或者删除的结肠runTimedCode:或声明runTimedCoderunTimedCode(timer: NSTimer) Selector每个冒号代表一个参数。

您有几个问题:

  1. 您已经在button函数中而不是实例函数中定义了runTimedCode函数
  2. 您已经指定了正确的选择器签名runTimedCode:带有冒号),但是尚未指定将发送到此函数的NSTimer参数(这是选择器中的:所指示的)。 你要:

import UIKit
import AVFoundation
 import Foundation

var position = 0
var gameTimer : NSTimer?  // Don't assign a value just to keep the compiler happy - if the variable is an optional declare it as such

class ViewController: UIViewController {


    @IBAction func button(sender: AnyObject) {

        self.gameTimer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: "runTimedCode:", userInfo: nil, repeats: true)

    }

    func runTimedCode(timer:NSTimer) {
            position = Int(arc4random_uniform(11))
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM