swift中的set和get方法与OC中的使用方法不太一样。
swift中的set,get方法是接在属性的声明后面的。如图
依照上图就可以编写属性的set和get方法,道理和oc中是一致的,只是形式不太一样了。还有一个注意点就是,swift的set方法相比于OC的set方法,少了一个接收的参数。swift中的set方法中可以直接使用一个变量newValue,这个newValue变量就是在外界接收的值(相当于OC中set方法的参数),我们直接使用其进行赋值即可。
上图中还有一个问题:set方法中调用self.属性会造成死循环,但是swift中有没有OC中的 _属性 形式的调用属性方法。那么怎么解决呢?就是再创建一个全局变量,接收传入的值,如下图,使用_label接收值即可
但是上面这种方法难免有些麻烦,例如我们自定义控件,或者为UI控件赋值的时候,这样做过于繁琐。这时候我们就要使用didSet,willSet方法了。didSet方法是set赋值完成之后调用,willSet方法是开始set赋值之前调用,作用类似于代理方法监听。具体使用如下图
上图是一个模型属性的set方法,我们直接使用didSet方法,在item属性成功接收了外界的值后,这时候模型属性item已经set完成,有了数据,然后在didSet方法中,为UI控件赋值。
网友评论