tre*_*orj 34
问题1: private(set)是否阻止客户端调用array.append?
是的,它确实.
问题2:如果我使用属性观察器添加到数组中didSet
,那么当元素附加到数组时是否会调用它?
是的,在didSet
被调用时append()
被调用.
当您意识到 Swift 中的数组是按值有效传递时,您的问题的答案就很容易理解了。我说有效是因为它们在传递时表现得好像被复制了一样,但是在引擎盖下有一些巧妙的魔法来优化事物并避免实际上不必要地重复元素。
的didSet
属性值时的变化,其在夫特包括阵列处理器被调用。所以append()
Swift 中的数组实际上类似于+=
整数上的a :首先读取数组,然后使用附加值创建一个新数组,然后将该新数组写回属性。因此,您可以看到,didSet
如果您调用append()
数组属性,它肯定会调用,同样,通过set
设为私有,外部用户将无法调用,append()
因为他们无法将新值写回数组。
归档时间: |
|
查看次数: |
5682 次 |
最近记录: |