假设我在CustomTimer类中声明了一个函数:
class CustomTimer {
class func scheduledTimerWithSelector(aSelector: Selector) -> CustomTimer {
// aSelector ??
}
}
如何处理此aSelector参数?
与NSTimer.scheduledTimerWithTimeInterval方法一样,它的剂量如何?
答案 0 :(得分:2)
您应该检查Selector
结构。
来自apple docs:
在Swift中,Objective-C选择器由Selector表示 结构体。您可以使用字符串文字构造选择器,例如 让mySelector:Selector =“tappedButton:”。因为字符串文字 可以自动转换为选择器,可以传递一个字符串 任何接受选择器的方法的文字。
答案 1 :(得分:1)
Swift的选择器功能:
func selectorFunc(aSel:Selector){
if self.respondsToSelector(aSel){
NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: aSel, userInfo: nil, repeats: false)
}
}
func gooleIt(){
println("Hello")
}
功能调用:
self.selectorFunc(Selector(gooleIt()))
希望对你有所帮助。
答案 2 :(得分:0)
你可以用这样的选择器声明一个方法,你可以通过创建一个UIControl来调用它,因为在Swift中没有performSelector方法:
func methodWithSelector(sel:Selector) {
var control = UIControl()
control.sendAction(sel, to: self, forEvent: nil)
}
如果您不需要在主线程上调用它,则另一个选项是这样的:
func methodWithSelector(sel:Selector) {
NSThread.detachNewThreadSelector(sel, toTarget: self, withObject: nil)
}
你会这样称呼:
methodWithSelector(Selector("methodCall"))
或者像这样
methodWithSelector("methodCall")
然后你必须有一个带选择器名称的方法
func methodCall() {
println("methodCall")
}