Swift 懒加载

1.常见懒加载方法

class ViewController: UIViewController {
    
    lazy var label: UILabel = {
        let label = UILabel(frame: .zero)
        label.translatesAutoresizingMaskIntoConstraints = false
        label.textColor = .black
        label.font = UIFont.systemFont(ofSize: 16, weight: .bold)
        return label
    }()
}

2.懒加载使用weak 还是 unowned?

[weak self]  in

还是用
[unowned self]  in
如果你能保证在使用过程中引用对象不会为nil,用unowned 。如果不能,那么就用weak

3.工厂方法 + 懒加载

class ViewController: UIViewController {
    
    lazy var label: UILabel = self.createCustomLabel()

    private func createCustomLabel() -> UILabel {
        print("被调用")
        let label = UILabel(frame: .zero)
        label.translatesAutoresizingMaskIntoConstraints = false
        label.textColor = .black
        label.font = UIFont.systemFont(ofSize: 16, weight: .bold)
        return label
    }
}

4.如果希望在多处使用,使用静态工厂 + 懒加载

class ViewController: UIViewController {
    
    lazy var label: UILabel = UILabel.createCustomLabel()
}

extension UILabel {

    static func createCustomLabel() -> UILabel {
        let label = UILabel(frame: .zero)
        label.translatesAutoresizingMaskIntoConstraints = false
        label.textColor = .black
        label.font = UIFont.systemFont(ofSize: 16, weight: .bold)
        return label
    }
}