未实现 methodSignatureForSelector:无法识别的选择器 (NSTimer)
does not implement methodSignatureForSelector: Unrecognized selector (NSTimer)
我通过以下方式在我的 Swift 应用程序中使用 NSTimer
:
func playEvent(eventIndex : Int){
if (eventIndex < 2){
let currEvent = self.eventArray[eventIndex]
currEvent?.startEvent()
let nextIndex = eventIndex + 1
NSTimer.scheduledTimerWithTimeInterval((currEvent?.duration)!, target: self, selector: "playEvent(nextIndex)", userInfo: nil, repeats: true)
}
else if (eventIndex==2){
self.eventArray[eventIndex]?.startEvent()
NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: "finishSentence", userInfo: nil, repeats: true)
}
else{
//do nothing
}
}
我认为问题可能是我没有 属性 使用参数调用选择器方法。如果那不可能,我该如何解决这个问题?
正在调用第一个 NSTimer
实例。这是完整的 Swift class 以供参考:https://gist.github.com/ebbnormal/79941733b82f5fe58282
选择器由方法名表示
func playEvent()
selector: "playEvent"
如果该方法只有一个参数,则添加一个冒号
func playEvent(eventIndex : Int)
selector: "playEvent:"
如果该方法有多个参数,所有参数名称连接在一起,用冒号分隔
func playEvent(eventIndex : Int, flag: Bool)
selector: "playEvent:flag:"
使用NSTimer
指定直接参数来保存定时器实例。
func playEvent(timer : NSTimer)
您必须通过计时器的 userInfo
对象传递更多参数。
您不能将 nextIndex 直接传递给选择器。 NSTimer 的一种选择是通过 userInfo 传递值,例如:
NSTimer.scheduledTimerWithTimeInterval(1, target: self,
selector: "mySelector:",
userInfo: NSNumber(integer: 999),
repeats: true)
func mySelector(timer: NSTimer){
print(timer.userInfo)
}
我通过以下方式在我的 Swift 应用程序中使用 NSTimer
:
func playEvent(eventIndex : Int){
if (eventIndex < 2){
let currEvent = self.eventArray[eventIndex]
currEvent?.startEvent()
let nextIndex = eventIndex + 1
NSTimer.scheduledTimerWithTimeInterval((currEvent?.duration)!, target: self, selector: "playEvent(nextIndex)", userInfo: nil, repeats: true)
}
else if (eventIndex==2){
self.eventArray[eventIndex]?.startEvent()
NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: "finishSentence", userInfo: nil, repeats: true)
}
else{
//do nothing
}
}
我认为问题可能是我没有 属性 使用参数调用选择器方法。如果那不可能,我该如何解决这个问题?
正在调用第一个 NSTimer
实例。这是完整的 Swift class 以供参考:https://gist.github.com/ebbnormal/79941733b82f5fe58282
选择器由方法名表示
func playEvent()
selector: "playEvent"
如果该方法只有一个参数,则添加一个冒号
func playEvent(eventIndex : Int)
selector: "playEvent:"
如果该方法有多个参数,所有参数名称连接在一起,用冒号分隔
func playEvent(eventIndex : Int, flag: Bool)
selector: "playEvent:flag:"
使用NSTimer
指定直接参数来保存定时器实例。
func playEvent(timer : NSTimer)
您必须通过计时器的 userInfo
对象传递更多参数。
您不能将 nextIndex 直接传递给选择器。 NSTimer 的一种选择是通过 userInfo 传递值,例如:
NSTimer.scheduledTimerWithTimeInterval(1, target: self,
selector: "mySelector:",
userInfo: NSNumber(integer: 999),
repeats: true)
func mySelector(timer: NSTimer){
print(timer.userInfo)
}