Swift 如何使用Selector

本文介绍了Swift语言中如何使用Selector,包括使用可选链式替换respondsToSelector:,避免使用performSelector,以及如何在需要Selector的地方使用字符串表示,并讨论了Swift类的方法如何暴露给ObjC运行时。

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值