@H_502_2@观察属性的变化,是指属性被修改时可以调用我们事先写好的代码去额外执行一些操作。@H_502_2@
@H_502_2@类似于@H_502_2@OC@H_502_2@中的@H_502_2@KVO@H_502_2@
@H_502_2@
1. willSet @H_502_2@在设置新值的时候调用@H_502_2@
2. didSet @H_502_2@在设置新值的之后调用@H_502_2@
@H_502_2@可以直接为除@H_502_2@ lazy@H_502_2@属性之外的存储属性添加属性观察器,你不可以直接给类里面的计算属性添加属性观察器,@H_502_2@
@H_502_2@当然也可以在继承类中为父类的计算属性提供属性观察器(后面再讲)。@H_502_2@
*/@H_502_2@
@H_502_2@
@H_502_2@
@H_502_2@struct@H_502_2@ MyRect {@H_502_2@
@H_502_2@var@H_502_2@ origion:(x: @H_502_2@Double@H_502_2@,y: @H_502_2@Double@H_502_2@) = (@H_502_2@0@H_502_2@,@H_502_2@0@H_502_2@) {@H_502_2@
@H_502_2@willSet@H_502_2@ {@H_502_2@
@H_502_2@// @H_502_2@属性被修改之前@H_502_2@
@H_502_2@@H_404_131@print@H_502_2@(@H_502_2@"will set==@H_502_2@\@H_502_2@(@H_502_2@newValue.x@H_502_2@) @H_502_2@\@H_502_2@(@H_502_2@newValue.y@H_502_2@)"@H_502_2@)@H_502_2@
}@H_502_2@
@H_502_2@
@H_502_2@didSet@H_502_2@ {@H_502_2@
@H_502_2@// @H_502_2@属性被修改之后@H_502_2@
@H_502_2@@H_404_131@print@H_502_2@(@H_502_2@"did set==@H_502_2@\@H_502_2@(@H_502_2@oldValue.x@H_502_2@) @H_502_2@\@H_502_2@(@H_502_2@oldValue.y@H_502_2@)"@H_502_2@)@H_502_2@
}@H_502_2@
}@H_502_2@
@H_502_2@var@H_502_2@ size: (w: @H_502_2@Double@H_502_2@,h: @H_502_2@Double@H_502_2@) = (@H_502_2@0@H_502_2@,@H_502_2@0@H_502_2@)@H_502_2@
@H_502_2@var@H_502_2@ center: (x: @H_502_2@Double@H_502_2@,@H_502_2@0@H_502_2@)@H_502_2@
}@H_502_2@
@H_502_2@
@H_502_2@var@H_502_2@ rect = @H_502_2@MyRect@H_502_2@()@H_502_2@
@H_502_2@
rect.@H_502_2@size@H_502_2@ = (@H_502_2@100@H_502_2@,@H_502_2@100@H_502_2@)@H_502_2@
@H_502_2@
@H_477_301@ @H_502_2@// @H_502_2@写@H_502_2@ @H_502_2@内容被修改的时候被调用@H_502_2@
rect.@H_502_2@origion@H_502_2@ = (@H_502_2@9@H_502_2@,@H_502_2@9@H_502_2@) @H_502_2@// setter @H_502_2@写@H_502_2@
@H_502_2@
@H_477_301@ @H_502_2@// @H_502_2@这个时候不会调用了@H_502_2@
@H_502_2@let@H_502_2@ dd = rect.@H_502_2@origion@H_502_2@ @H_502_2@// getter @H_502_2@读@H_502_2@
@H_502_2@
@H_502_2@
rect.@H_502_2@center@H_502_2@ = (rect.@H_502_2@origion@H_502_2@.x + rect.@H_502_2@size@H_502_2@.w / @H_502_2@2@H_502_2@,rect.@H_502_2@origion@H_502_2@.y + rect.@H_502_2@size@H_502_2@.h / @H_502_2@2@H_502_2@)@H_502_2@
原文链接:https://www.f2er.com/swift/322416.html