我剛剛花了3個小時來調試一個錯誤,並最終縮小了(我認爲)變量名稱。'init'被禁止作爲變量名的* part *嗎?
我正在使用initMonths(最初幾個月),這導致了不可預知的錯誤,但是當我更改爲iMonths時,它工作正常!
我可以理解,防止使用它自己的init,但會驚訝,如果它被阻止只是作爲變量名的一部分。這是一個錯誤還是一個功能?
我剛剛花了3個小時來調試一個錯誤,並最終縮小了(我認爲)變量名稱。'init'被禁止作爲變量名的* part *嗎?
我正在使用initMonths(最初幾個月),這導致了不可預知的錯誤,但是當我更改爲iMonths時,它工作正常!
我可以理解,防止使用它自己的init,但會驚訝,如果它被阻止只是作爲變量名的一部分。這是一個錯誤還是一個功能?
這不一定是一個錯誤,如果它只是名稱是重疊。有一部分ARC用於瞭解保留計數何時應該更新,您可能會遇到這種情況。
類似規則適用於名稱開頭的使用new
(出於同樣的原因)。
在任何名稱的開始處,避開使用init
確實很容易明智,除非它實際上是init
函數。
我可以想象,你的問題可能與ARC涉及它不應該在哪裏,它需要一段時間才能被調用,應該不會,但那會很奇怪。
我認爲這個問題實際上是另一回事,而名稱更改還有其他一些影響。最糟糕的情況是這意味着你有一個內存問題,改變這個名字已經改變了你的代碼的內存空間,所以你剛剛把這個bug移到了別的地方(或者那些線上的東西)。
我可以在變量名開頭使用'init'和'new'就好了嗎? –
這些命名約定僅適用於(我記得的)方法,而不適用於變量。 –
也似乎爲我工作得很好。如果這在某些情況下確實會導致不可預知的行爲,我不會說這不是一個錯誤。 –
'let initMonths = 123; print(initMonths * 10)'對我來說工作正常...... –
@TimVermeulen它似乎越過了編譯器,但在應用程序中導致不可預知的行爲。我使用initMonths作爲對象屬性,當我使用這些對象來填充UITableViewCells時,它會掉落在第40行左右(儘管不一致) – Derek