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


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