2014-09-29 90 views
4

我注意到,在斯威夫特初始化初始化属性作品同时使用:差异初始化

self.property = 1 

property = 1 

是两者之间有什么区别?如果没有,是否有一个比另一个更有利的惯例?

回答

10

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

作为一个偏好问题,我总是倾向于使用明确的,使用self。另外,通过这样做,我避免了当我想访问类属性时发生的常见错误,并且我正在使用局部变量或函数参数。