swift:谈谈swift几种常见属性的区别

Posted 程序猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift:谈谈swift几种常见属性的区别相关的知识,希望对你有一定的参考价值。

一、前奏

Swift作为一门新语言,经过几年的发展,逐渐趋于完善,目前已经更新到3.0版本,它汇集许多其他语言的特点,例如JS、Paython等,完全区别于OC。个人感觉它没有完全的OOP和OOD的性质。

 

二、谈谈几种属性的区别

存储属性

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

计算属性

定义:依赖于存储属性,通过计算得出来,它提供getter访问值,提供setter方法间接给其他属性或者变量设置值

类属性

定义:其本质其实就是一个全局属性,在类里限定了其作用域,用关键字static修饰

懒加载属性

定义:该属性在使用的时候初始化一次,用关键字lazy修饰,必须进行初始化,非实例属性懒加载时在大括号{}后面要加上()

全局属性

定义:类外面的属性,作用域全局。类似于OC的static修饰的属性

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        //实例属性
        let p = Person()
      
//存储属性
print(p.age)
//懒加载属性
print(p.name)
//类属性
print(Person.height)
//计算属性
print(p.getAge)
//全局属性
print(commonProperty) } } //全局属性 var commonProperty = {()->String in print("Common Property1") return "Common Property" }() class Person{ //类属性 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") } }

 

三、总结:基于类,类的构造

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

 

以上是关于swift:谈谈swift几种常见属性的区别的主要内容,如果未能解决你的问题,请参考以下文章

Swift中结构体和类的区别

Swift 可选属性声明之间的区别 [重复]

简单谈谈OC与Swift的异同

简单 谈谈 关于 锁 的常见问题

swift 3中计算属性和带闭包的属性集之间的区别? [复制]

Swift中变量声明和定义的区别