Swift 如何使用Selector

Swift语言不使用Selector,在Swift里面使用可选链式替换respondsToSelector:来替换Selector,不要使用performSelector,因为它是不安全的;
当使用ObjC的api时,或者其它需要使用到Selector的地方,你可以用string来代表一个Selector;

button.addTarget(self, action: "buttonTapped:", forControlEvents: .TouchUpInside)
func buttonTapped(id:UIButton){
}

ObjC里面的SEL类型对应Swift里面的Selector,Selector可以自动从一个string字符串创建出来,所以你不需要使用Selector(“string”)或者NSSelectorFromString(“string”)。
因为Selector是ObjC对象,所以遵循ObjC的命名规则:当一个方法有需要一个参数时,selector就添加一个分号(“:”),例如func test()对应”test”,而func test(age:Int, name:String)对应“test:name:”

如果一个方法被selector所使用到,则这个方法必须暴露给ObjC运行时,如果方法所属的类继承自NSObject,则不需要额外标注,因为它已经是ObjC运行时了,但如果是纯Swift类,就需要给方法添加一个@objc标注。注意:private方法不会暴露给runtime,所以你的方法的可见性至少是internal。

来源: http://stackoverflow.com/questions/24007650/selector-in-swift


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章