Swift 如何使用Selector
2015-12-24 17:04
393 查看
Swift语言不使用Selector,在Swift里面使用可选链式替换respondsToSelector:来替换Selector,不要使用performSelector,因为它是不安全的;
当使用ObjC的api时,或者其它需要使用到Selector的地方,你可以用string来代表一个Selector;
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
当使用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
相关文章推荐
- Apple Swift学习教程
- 介绍 Fedora 上的 Swift
- 基于android背景选择器selector的用法汇总
- jQuery Selector选择器小结
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例
- 关于query Javascript CSS Selector engine
- Android selector背景选择器的使用详解
- Android中的Shape和Selector的结合使用实例
- 简单分析Swift语言的一些基本特征
- Swift与C语言指针结合使用实例
- Swift心得笔记之控制流
- 用Swift构建一个简单的iOS邮件应用的方法
- 苹果公司推出的新编程语言Swift简介和入门教程
- Android Selector和Shape的使用方法
- 探讨Swift数组和字典
- Swift中的指针操作和使用详细介绍
- Swift中使用正则表达式的一些方法