NSTimer找不到选择器

sol*_*ing 10 nstimer swift

我想在不从UIViewVontroller继承的类中使用NSTimer.我有2个文件:一个ViewController和一个类似的TimerClass:

视图控制器:

import UIKit

class ViewController: UIViewController {

    var timerClass = TimerClass()

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewDidAppear(animated: Bool) {
        timerClass.launchTimer()
    }

}
Run Code Online (Sandbox Code Playgroud)

TimerClass:

import Foundation

class TimerClass {

    var timer = NSTimer()

    init(){}

    func launchTimer(){
        var timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "timerEnd", userInfo: nil, repeats: true)
    }

    func timerEnd(){
        println("That worked")
    }
}
Run Code Online (Sandbox Code Playgroud)

当我启动该应用程序时,我遇到了崩溃:

2015-01-12 19:48:24.322 Timer_TEST [5829:185651]***NSForwarding:警告:类'Timer_TEST.TimerClass'的对象0x7fbc3be20710没有实现methodSignatureForSelector: - 提前故障无法识别的选择器 - [Timer_TEST.supportFile timerEnd]

任何的想法?

谢谢

mat*_*att 29

编辑:请注意,从Swift 2.2开始,你将无法犯这个错误!您将使用新#selector语法(请参阅/sf/answers/2496083481/),编译器将不允许您为未向Objective-C公开的方法形成选择器.


这只是将Swift函数暴露给Objective-C以使其对Objective-C可见的问题.你有四个选择:

  • @Rivera这只是一个允许Objective-C来查看Swift函数的问题.你必须以某种方式故意将它暴露给Objective-C.我修改了我的答案以提供一些进一步的方法. (2认同)