Swift 如何使用Selector

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ccflying88/article/details/50395659

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


展开阅读全文

没有更多推荐了,返回首页