美文网首页
2020-11-19-构造函数、属性监听器

2020-11-19-构造函数、属性监听器

作者: 清风明月伴我行 | 来源:发表于2020-11-19 18:35 被阅读0次

构造函数

import UIKit

//构造函数
//构造函数类似于OC中的中石化方法:init方法
//默认情况创建一个类时,必然会调用一个构造函数
//即便是没有编写任何构造函数,编译器也会提供一个默认的构造函数
//重写父类构造函数必须继承自NSObject

//构造函数的基本使用
//类的属性必须有值
//如果不是在定义时初始化值,可以在构造函数中赋值
class Person : NSObject {
    var name : String?
    var age : Int = 0
    override init() {

        print("=====")
        //        super.init() 在构造函数中,如果没有明确super.init(),那么系统会自动在函数最后帮助调用
    }
    
    init(dict: [String : Any]) {
        let tempName = dict["name"]
//        tempName是一个Any?,转成String?
//        as?最终转成的类型是一个可选类型
//        as!最终转成的类型是一个确定类型
        name = tempName as? String
        
//        let tempAge = dict["age"]
//        let tempAge1 = tempAge as? Int
//        if tempAge1 != nil {
//            age = tempAge1!
//        }
        
        if let age = dict["age"] as? Int {
            self.age = age
        }
    }
//    init(dict: [String : Any]) {
//        super.init()
//        setValuesForKeys(dict)
//    }
}
let p1 = Person()
let p2 = Person()

属性监听器

import UIKit

class Person :NSObject {
    var name : String? {
        willSet {
            print(name)
            print(newValue)
        }
        
        didSet {
            print(oldValue)
            print(name)

        }
    }
}
let p1 = Person()

p1.name = "joer"
//p1.name = "mark"

相关文章

网友评论

      本文标题:2020-11-19-构造函数、属性监听器

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