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))
}}}
当我 运行 这个应用程序崩溃并且 returns 错误:Thread 1: signal SIGABRT.
我有 运行 没有 NSTimer 的脚本,它运行良好。
我也 运行 它有和没有冒号,它 returns 相同的结果。
两期:
将 func runTimedCode()
置于 @IBAction button()
的范围之外。选择器/目标方法必须位于 class.
的顶层
要么删除 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))
}
}
在 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))
}}}
当我 运行 这个应用程序崩溃并且 returns 错误:Thread 1: signal SIGABRT.
我有 运行 没有 NSTimer 的脚本,它运行良好。
我也 运行 它有和没有冒号,它 returns 相同的结果。
两期:
将
func runTimedCode()
置于@IBAction button()
的范围之外。选择器/目标方法必须位于 class. 的顶层
要么删除
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))
}
}