[英]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:
或声明runTimedCode
如runTimedCode(timer: NSTimer)
Selector
每个冒号代表一个参数。
您有几个问题:
button
函数中而不是实例函数中定义了runTimedCode
函数 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.