swift 4.2 官方文档学习笔记(九)- Properties

Sellen Wei
2 min readDec 16, 2018

--

这一章是关于一些property(中文 英文)的储存,啊,突然发现好多学习到的关键词居然忘记英文了,所以以后关键词部分会使用英文,解释部分会使用中文,方便自己以后回看。

  1. structure被声明为let时,里面的所有properties都不可修改,class被声明为let时,里面的property只要是var都可以修改。
  2. lazy property 只有在使用的时候才会去初始化,lazy只能和var搭配使用,这是因为constant property在instance初始化后一定要有一个值。如果lazy modifier被多个thread访问,这个property就有可能被多次initialize
  3. computed property,这个就是我经常在code库中看到的,每次在set和get的时候,都要计算一下

4. 如果省略了set{}则说明声明为只读的,但虽然只读不能改变,但是在声明只能用var,而不能使用let,这是因为get中的内容还是有可能在runtime改变的。

5. Property Observers

  • willSet is called just before the value is stored.(在变量被改变之前,先call这个,新的值会被叫做newValue)
  • didSet is called immediately after the new value is stored.(在变量改变之后,call 这个,旧的值会被叫做oldValue)

如果在in-out parameter中设定observer,那么每次改写都一定会被调用,因为修改时,实际修改了里面的property

6. Type Properties 这个概念在java中跟static类似,意思是你创建一个只跟type(class)有关的参数,所有instance在生成的时候都访问同一个property

--

--