更新: 今天(2016年3月23日)Swift正式發(fā)布2.2 已經添加了#selector輔助語法, 不用糾結字符串的事兒了.
OC中的@selector對應到Swift里是Selector對象
Selector對象是通過字符串來初始化的,沒法像OC那樣具備語法檢測的機制,因此字符串的形式就需要十分注意了
- 無參數(shù)的形式:
func test1()
Selector("test1")
- 一個參數(shù)的情況
func test2(arg: NSNumber)
Selector("test2:")
- 一個參數(shù),并且是帶參數(shù)名的情況:
func test3(arg arg: NSNumber)
Selector("test3WithArg:")
注意: 這里使用了一個很特別的"With"的形式, 其實這和OC里的習慣用法是類似的
對于函數(shù)test3, 我們在OC的習慣寫法是這樣的:
- (void) test3WithArg:(NSNumber)arg {}
- 多個參數(shù)的形式
func test4(arg: NSNumber arg2: NSNumber)
Selector("test4:arg2:")
注意,如果第一個參數(shù)帶了參數(shù)名阅嘶,也是需要用With的形式.
另外杂腰,Selector有一個從字符串默認構造函數(shù)竹挡,因此在performSelector等方法需要傳遞Selector類型對象的情況下剖踊,可以直接傳遞字符串參數(shù)