Swift3.0中Selector的变化

这篇博客发布的有点晚,最近项目中使用了Swift3.0,发现Selectors又有新的变化,决定更新一下博客

Selectors

之前有学习过Swift,但是项目中一直没有使用,所以好长时间没有接触了,最近时间比较多,打算使用Swift仿一款APP.在使用过程中发现了一些语法的变化,特此记录下来

在之前的版本中, selector直接传入字符串,并且没有自动补全功能

 let button = UIButton(type: .Custom)
 button.addTarget(self, action: "buttonClick:", forControlEvents: .TouchUpInside)
 func buttonClick(sender: UIButton) {}

但是现在如果还是这么写的话,就会有警告,如下:


Swift3.0中Selector的变化_第1张图片
selector

然后就在SwiftGG中发现Swift:Selector 语法糖这篇博客,在里面做了详细的说明.

[转]在Swift中的优化

 button.addTarget(self, action: #selector(XNHomeController.buttonClick(_:)), forControlEvents: .TouchUpInside)

在浏览代码的时候,上面这句代码简直不忍直视,太长,可读性也很差.
让我们来整合一下这些 selector,这样需要时可以直接引用,并且可以在同一个地方修改。

整合方式一

    private struct Action {
        static let buttonClick = #selector(XNHomeController.buttonClick(_:))
    }
    button.addTarget(self, action: Action.buttonClick, forControlEvents: .TouchUpInside)

整合方式二

private extension Selector {
    static let buttonClick = #selector(XNHomeController.buttonClick(_:))
    
}
 button.addTarget(self, action: Selector.buttonClick, forControlEvents: .TouchUpInside)

示例代码

Swift3.0的新写法

let button = UIButton(type: .Custom)
button.addTarget(self, action: #selector(bottomButtonClick), for: .touchUpInside) 
func bottomButtonClick(sender: UIButton){ }

你可能感兴趣的:(Swift3.0中Selector的变化)