Swift Selector

本文介绍了Swift中关于Selector的使用,包括如何在不支持@selector的情况下通过结构体实现,以及如何使用NSSelectorFromString()。详细讲解了无参数、带参数、带外部参数名的方法的Selector调用方式,并给出了实例代码,特别指出参数命名规则对于Selector的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  看了喵神的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)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值