我注意到在Swift初始化程序中初始化属性可以同时使用:
self.property = 1
和
property = 1
这两者有什么区别吗?如果没有,是否有一项有利于一方的公约呢?
答案 0 :(得分:10)
在第一个你明确表示它是一个类/结构属性,而在第二个它是隐含的。但是有一个很大的区别:如果有一个具有相同名称的局部变量(例如传递给init的参数),它将优先并隐藏class / struct属性。
作为优先选择,我总是喜欢使用self
来明确说明。此外,通过这样做,我避免了当我认为我正在访问类属性时发生的常见错误,而我正在使用局部变量或函数参数。