初始化
- Swift 的 Class 中所有的属性都必须初始化
class Person: NSObject { // 下面属性初始化值为 nil var name: String? var age: Int? var gender: String? }
- 属性在初始化方法中初始化, 属性可以不加可选 ?
Swift 允许方法重载, 方法名可以一致, 只要参数和返回值有不一致
class Person: NSObject { var name: String var age: Int var gender: String // 重写初始化方法 override init() { self.name = "cui" self.age = 20 self.gender = "man" } // 自定义初始化方法 init(name: String, age: Int, gender: String) { self.name = name self.age = age self.gender = gender } }
如果自定义了初始化方法, 那么原来 init() 方法将失效, 除非重写初始化方法
KVC 赋值注意点
// KVC 键值编码 // 1.如果在初始化方法中进行KVC赋值, 需要调用 super.init() 进行初始化 // 调用 super.init()的目的就是为了能在 KVC 赋值之前给属性分配存储空间 // 2.如果定义一个对象属性, 那么后面可以写上 ? // 3.如果定义一个基本数据类型, 那么建议直接赋值为 0 或者 true 布尔值 // 4.KVC 赋值属性必须和字典 key 一致, 可以有额外的属性 var name: String? var gender: String? var age: Int = 0 var marry = true init(dict: [String : NSObject]) { super.init() setValuesForKeysWithDictionary(dict) }