2014-09-29 112 views
4

我注意到,在斯威夫特初始化初始化屬性作品同時使用:差異初始化

self.property = 1 

property = 1 

是兩者之間有什麼區別?如果沒有,是否有一個比另一個更有利的慣例?

回答

10

在第一個你明確表示它是一個類/結構屬性,而在第二個它是隱式的。但是有一個很大的區別:如果有一個具有相同名稱的本地變量(例如傳遞給init的參數),它將優先並隱藏類/結構屬性。

作爲一個偏好問題,我總是傾向於使用明確的,使用self。另外,通過這樣做,我避免了當我想訪問類屬性時發生的常見錯誤,並且我正在使用局部變量或函數參數。