Swift中的便利构造函数

2019-10-08  本文已影响0人  下班不写程序
函数

目的: 条件判断, 只有满足条件, 才能实例化出对象, 可以预防不必要的内存开销.
特点: convenience关键字修饰; 不能被重写或者super

下面通过一段代码来了解什么叫便利构造函数

import UIKit

@objcMembers

class Person: NSObject {

    var name: String?
    var age: Int = 0

    // 这是 KVC构造函数 ->也就是 指定构造函数 ->也就代表, 肯定能创建出一个对象, 而且不为 nil
    init(dict: [String: Any]) {
    
        super.init()
        setValuesForKeys(dict)
    }
    
    override func setValue(_ value: Any?, forUndefinedKey key: String) {
        
    }
    
    /* 便利构造函数
     写法:
        - 先写init()方法
        - 添加初始化需要的参数
        - 因为可能初始化成功, 也可能初始化失败, 所以要添加? 使其结果为可选值 init?()
        - 便利函数想要完成初始化, 必须使用自己的指定构造函数, 所以是self, 不是super
        - 添加 convenience 关键字, 代表是一个便利构造函数
    */
    convenience init?(name: String, age: Int) {
        
        if(age < 0 || age > 200){
            return nil
        }
        
        self.init(dict: ["name": name, "age": age])
    }
}
外界使用时的一些疑问: image.png
上一篇 下一篇

猜你喜欢

热点阅读