Swift Selector

看了喵神的Swifter 100个必备的小tips总结下

swift中不支持@selector关键字,将SEL重新定义为结构体了。

但是NSSelectorFromString()依然可以使用,但是获取方法名的规则有点变动。

1.不带参数的方法

func normalSelector()

{

NSLog("normal")

}


let ts = TestSelector()

let ns = Selector("normalSelector")

ts.performSelector(ns)


2.带参数的方法,参数间不能出现空格,否则无法识别(我在swift2.0 Xcode7.1测试的)

func normalWithPara(name:String)

{

NSLog("para = %s",name)

}

func normalWithMorePara(name:String,age : Int)

{

NSLog("more para = %s %d",name,age)

}


let np = Selector("normalWithPara:")

ts.performSelector(np,withObject: "np")

let nmp = Selector("normalWithMorePara:age:")

ts.performSelector(nmp,withObject: "nmp",withObject:1)


"normalWithMorePara:age:" 参数中如果添加个空格变成 "normalWithMorePara: age:" 就会残忍的崩溃。。。


3.带外部参数名的方法,如果第一个参数有外部变量名,则需要方法名+With+外部参数名(第一个字母要大些),之后的参数有外部变量名的都是用外部变量名。


func outsideselectorWithMorePara(name nm:String,age ag:Int)

{

NSLog("nm = %s,ag = %d",nm,ag)

}


func outsideselector(name nm:String)

{

NSLog("nm = %s",nm)

}

let os = Selector("outsideselectorWithName:")

ts.performSelector(os,withObject:"os")

let oms = Selector("outsideselectorWithMoreParaWithName:age:")

ts.performSelector(oms,withObject: "oms",withObject: 1)

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...