habe ich eine Klasse auf diesem Code basiert: https://gist.github.com/etartakovsky/06b8c9894458a3ff1b14Unbekannter Selektor an Instanz gesendet - Swift 3
Wenn ich versuche, um die Klasse zu instanziieren und die Zecke Methoden aufrufen, erhalte ich „Unbekannter Selektor gesendet Instanz“ Fehler. Ich überprüfte den Code immer und immer wieder, aber nicht verstehen, warum dies geschieht, wird jede Beratung geschätzt:
Stopwatch-Klasse Quelle:
import Foundation
import QuartzCore
class StopWatch: NSObject{
private var displayLink: CADisplayLink!
private let formatter = DateFormatter()
var callback: (() -> Void)?
var elapsedTime: CFTimeInterval!
override init() {
super.init()
self.displayLink = CADisplayLink(target: self, selector: "tick:")
displayLink.isPaused = true
displayLink.add(to: RunLoop.main, forMode: RunLoopMode.commonModes)
self.elapsedTime = 0.0
formatter.dateFormat = "mm:ss,SS"
}
convenience init(withCallback callback: @escaping() -> Void) {
self.init()
self.callback = callback
}
deinit {
displayLink.invalidate()
}
func tick(sender: CADisplayLink) {
elapsedTime = elapsedTime + displayLink.duration
callback?()
}
func start() {
displayLink.isPaused = false
}
func stop() {
displayLink.isPaused = true
}
func reset() {
displayLink.isPaused = true
elapsedTime = 0.0
callback?()
}
func elapsedTimeAsString() -> String {
return formatter.string(from: Date(timeIntervalSinceReferenceDate:elapsedTime))
}
}
Und hier ist der Viewcontroller-Code:
import UIKit
class ActivityViewController: UIViewController {
let stopwatch = StopWatch()
@IBOutlet weak var elapsedTimeLabel: UILabel!
func tick() {
elapsedTimeLabel.text = stopwatch.elapsedTimeAsString()
}
override func viewDidLoad() {
super.viewDidLoad()
tick()
stopwatch.callback = self.tick
stopwatch.start()
// Do any additional setup after loading the view.
}
}
https://stackoverflow.com finden/questions/39205613/selector-syntax-for-swift-3-0 – mmtootmm