初始化

  1. Swift 的 Class 中所有的属性都必须初始化
    class Person: NSObject {
     // 下面属性初始化值为 nil
     var name: String?
     var age: Int?
     var gender: String?
    }
    
  2. 属性在初始化方法中初始化, 属性可以不加可选 ?
  3. 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
     }
    }
    
  4. 如果自定义了初始化方法, 那么原来 init() 方法将失效, 除非重写初始化方法

  5. 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)
     }
    

results matching ""

    No results matching ""