在Swift init中使用self和不使用self之间的区别

时间:2014-09-29 11:57:40

标签: properties swift initialization self convention

我注意到在Swift初始化程序中初始化属性可以同时使用:

self.property = 1

property = 1

这两者有什么区别吗?如果没有,是否有一项有利于一方的公约呢?

1 个答案:

答案 0 :(得分:10)

在第一个你明确表示它是一个类/结构属性,而在第二个它是隐含的。但是有一个很大的区别:如果有一个具有相同名称的局部变量(例如传递给init的参数),它将优先并隐藏class / struct属性。

作为优先选择,我总是喜欢使用self来明确说明。此外,通过这样做,我避免了当我认为我正在访问类属性时发生的常见错误,而我正在使用局部变量或函数参数。