初始化


普通初始化器

class Test {
    var name: String
    init(name: String) {
        self.name = name
    }
}
var t1 = Test(name: "hello")

可失败初始化器

class Test {
    var name: String
    init?(name: String) {
        if name == "unknown" {
            return nil
        } else {
            self.name = name
        }
    }
}
var t1: Test? = Test(name: "unknown")
print(ti?.name) //nil

必要初始化器

class Test {
    var name: String
    required init(name: String) {
        self.name = name
    }
}

class T: Test {
    required init(name: String) {
        super.init(name: name)
    }
}

结构体成员初始化器

struct StructTest {
    var name: String
    var age: Int
    //下面的初始化不需要我们实现,因为系统自动帮我们实现了
    /*
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
    */
}
var st = StructTest(name: "nihao", age: 18)

print(st.name) //nihao
print(st.age)    //18

闭包设置属性初始值

class Test {
    var name: String = {
        return "nini"
    }()
    
    var num: Int = {
        let a = 10
        let b = 20
        return a + b
    }()
}

var t1 = Test()
print(t1.name) //nini
print(t1.num)   //30

反初始器
当类对象没有被强应用,就会触发反初始化器,被释放。就是说引用计数为0时触发反初始器

deinit {
        print("销毁了")
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容