Swift - 存储属性、计算属性、类属性、懒加载属性、全局属性

存储属性

定义:实实在在存储常量和变量的

计算属性

定义:依赖于存储属性,计算得出

类属性

定义:其本质其实就是一个全局属性,在类里面限定了其作用域罢了

懒加载属性

定义:该属性在使用的时候初始化一次

全局属性

定义:类外面的属性,作用域全局。。正因为如此,Swift应该不能成为真正的oop和ood吧


class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let p = People()
        print(p.name)
        print(p.age)

        print(p.name)
        print(p.name)
        print(p.name)

        print(People.height)
        print(People.height)
        print(People.height)
        
        print(p.getAge)
        print(p.getAge)
        print(p.getAge)
        
        
        print(commonProperty)
        print(commonProperty)
        print(commonProperty)
        
       
    }
}
//全局属性
var commonProperty = {()->String in
    print("Common Property1")
    return "Common Property"
    }()

class People{
    //类属性
    static var height = {()->Int in
        print("Static Properties")
        return 170
    }()
    //存储属性
    var age = {()->Int in
        print("Store properties")
        return 26
    }()
    //计算属性
    var getAge:Int{
        get{
            print("Computed Properties")
            return age
        }
    }
  //懒加载属性
    lazy var name = {()->String in
        print("Lazy Properties")
        return "Lazy liyang"
    }()
    //构造方法
    init(){
        print("init")
    }
}

输出结果:
Store properties
init
Lazy Properties
Lazy liyang
26
Lazy liyang
Lazy liyang
Lazy liyang
Static Properties
170
170
170
Computed Properties
26
Computed Properties
26
Computed Properties
26
Common Property1
Common Property
Common Property
Common Property

总结:基于类,类的构造
1.存储属性,最先初始化
2.构造方法,仅次于存储属性调用,可以在这里对存储属性进行赋值
3.懒加载属性、类属性、全局属性都是在第一次使用的时候初始化一次,以后调用都不在初始化
warning:当懒加载属性是基于一个存储属性计算的时候,切勿使用懒加载属性,采用计算属性

你可能感兴趣的:(Swift - 存储属性、计算属性、类属性、懒加载属性、全局属性)