美文网首页面向全栈
OC里的@selector 在Swift的对应用法

OC里的@selector 在Swift的对应用法

作者: 子达如何 | 来源:发表于2016-02-17 09:51 被阅读1392次

    更新: 今天(2016年3月23日)Swift正式发布2.2 已经添加了#selector辅助语法, 不用纠结字符串的事儿了.

    OC中的@selector对应到Swift里是Selector对象

    Selector对象是通过字符串来初始化的,没法像OC那样具备语法检测的机制,因此字符串的形式就需要十分注意了

    1. 无参数的形式:
    func test1()
    Selector("test1")
    
    1. 一个参数的情况
    func test2(arg: NSNumber)
    Selector("test2:")
    
    1. 一个参数,并且是带参数名的情况:
    func test3(arg arg: NSNumber)
    Selector("test3WithArg:")
    

    注意: 这里使用了一个很特别的"With"的形式, 其实这和OC里的习惯用法是类似的

    对于函数test3, 我们在OC的习惯写法是这样的:
      - (void) test3WithArg:(NSNumber)arg {}
    
    1. 多个参数的形式
    func test4(arg: NSNumber arg2: NSNumber)
    Selector("test4:arg2:")
    

    注意,如果第一个参数带了参数名,也是需要用With的形式.

    另外,Selector有一个从字符串默认构造函数,因此在performSelector等方法需要传递Selector类型对象的情况下,可以直接传递字符串参数

    相关文章

      网友评论

      • 子达如何:据说3.0将要加入特别的关键字来识别Selector了,好事呀!

      本文标题:OC里的@selector 在Swift的对应用法

      本文链接:https://www.haomeiwen.com/subject/vovpkttx.html