本帖最后由 swifter 于 2016-10-21 03:24 编辑


上次在Swift大拇指上发了《Swift 3.0 必看:typealias支持泛型》,现在继续。

Swift 3.0 必看 系列

Swift 3.0 必看:#selector获取属性的getter和setter方法 - 敏捷大拇指 - Swift 3.0 必看 系列


在Swift中如果要获取一个方法的selector用#selector()实现。我们也知道OC中的属性其实是自动生成了getter和setter方法。

Swift 3中支持获取属性的getter和setter方法。语法就是:#selector(getter: keypath ) 和 #selector(setter: keypath )。示例如下:

[Swift] 纯文本查看 复制代码
class Person: NSObject {
    dynamic var firstName: String
    dynamic let lastName: String
    dynamic var fullName: String {
        return "\(firstName) \(lastName)"
    }

    init(firstName: String, lastName: String) {
        self.firstName = firstName
        self.lastName = lastName
    }
}

let firstNameGetter = #selector(getter: Person.firstName)
let firstNameSetter = #selector(setter: Person.firstName)


这两个方法和OC中的签名一致。set方法签名就是setFirstName: 。

然后就可以正常使用了:

Swift 3.0 必看:#selector获取属性的getter和setter方法

Swift 3.0 必看:#selector获取属性的getter和setter方法 - 敏捷大拇指 - Swift 3.0 必看:#selector获取属性的getter和setter方法





相关链接

SE0064-Referencing the Objective-C selector of property getters and setters

Swift 3.0 必看:新增的两种访问控制权限 fileprivate和open

Swift 3.0 必看:集合方法flatten()重命名为joined()

Swift 3.0 必看:typealias支持泛型

Swift 3.0 必看:#selector获取属性的getter和setter方法

Swift 3.0 必看:foundation中数据引用类型改为值类型

Swift 3.0 必看:dynamicType废除,用type(of: )代替

Swift 3.0 必看:给DispatchQueue扩展实现被废Dispatch once原有功能

Swift 3.0 必看:从使用场景了解GCD新API

Swift 3.0 必看:sizeof移进MemoryLayout

Swift 3.0 必看:@noescape走了, @escaping来了

Swift 3.0 必看:Swift中被忽略的@noescape

同时,欢迎订阅我在全球最大的Swift开发者社区——敏捷大拇指Swifthumb.com)上的淘帖专辑《Swift 3.0 必看语法变动》,有更多的Swift 3.0语法变动方面的资料,一旦有更新,就会通知到你。




作者:没故事的卓同学