È consentito chiamare un metodo statico da un NSTimer? Il compilatore non permetterà questo, lamentandosi con il criptico " 'selector' argomento extra in chiamata.Chiamare un metodo statico da NSTimer. È possibile?
struct MyStruct {
static func startTimer() {
NSTimer.scheduledTimerWithTimeInterval(1.0, target: MyStruct.self, selector: "doStuff", userInfo: nil, repeats: true)
}
static func doStuff() {
println("Doin' it.")
}
}
MyStruct.startTimer()
Ma, naturalmente, questo funziona bene ...
class MyClass {
func startTimer() {
NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "doStuff", userInfo: nil, repeats: true)
}
func doStuff() {
println("Doin' it.")
}
}
var instanceOfClass = MyClass()
instanceOfClass.startTimer()
Do devo solo la sintassi sbagliato, o non è permesso?
ho quasi il codice identico, e lo fa non funziona. In effetti, se incollo questo codice esatto, non funziona. 'Selettore non riconosciuto' ... Ha usato' class' per tutti? – SimplGy
@SimplGy: prova a precedere la tua funzione con l'attributo '@ objc'. –
Nota: è necessario ereditare da 'NSObject' affinché sia in grado di trovare il selettore di funzioni della classe. In caso contrario, si verificherà un arresto anomalo del runtime "Selettore non riconosciuto". – SimplGy