美文网首页
swift中的didSet和willSet的变量不可以在init

swift中的didSet和willSet的变量不可以在init

作者: 努力奔跑的____ | 来源:发表于2016-12-14 14:17 被阅读0次

    swift中的didSet和willSet使用过程中需要注意的地方:
    将下面的这段代码放在Xcode的Storyboard中,观察name和nickName中print的数据

    import UIKit
    class Manager {
        private var _nickName: String = ""
        var name: String? = nil { //这里有没有 “= nil” 都是一样的效果
            didSet {
                print(name)
            }
        }
        
        var nickName: String {
            set {
                _nickName = newValue
                print(newValue)
            }
            get {
                return _nickName
            }
        }
        
        init(name: String, nickName: String) {
            self.name = name
            self.nickName = nickName
            updateName("function setting name")
            updateNickName("function setting nickname")
        }
        
        func updateName(name: String) {
            self.name = name
        }
        
        func updateNickName(nickName: String) {
            self.nickName = nickName
        }
    }
    
    let manager = Manager(name: "init setting name", nickName: "init setting nickname")
    manager.name = "instance setting name"
    manager.nickName = "instance setting nickname"
    
    

    NOTE

    The willSet and didSet observers of superclass properties are called when a property is set in a subclass initializer, after the superclass initializer has been called. They are not called while a class is setting its own properties, before the superclass initializer has been called.

    Apple doc:
    https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html#//apple_ref/doc/uid/TP40014097-CH14-XID_368

    相关文章

      网友评论

          本文标题:swift中的didSet和willSet的变量不可以在init

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