2016-10-30 67 views
-1

如果我用這個:didSet導致EXC_BAD_ACCESS

fileprivate var _saved = false 
    open var lat = 0.0 { 
     didSet { 
      _saved = false 
     } 
    } 

導致EXC_BAD_ACCESS

moobj.lat = 0.0

,但簡單open var lat = 0.0看起來不錯。沒有錯誤。 爲什麼?

回答

0

經過幾個小時和幾個重建/重新啓動問題消失。不知道原因。 Imo,XCode的bug。

1

我想答案就在這裏:

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html

看特別是在部分題爲其中包含以下兩點「訪問級別的指導原則」:

我。公共變量不能被定義爲具有內部,文件私有或私有類型,因爲該類型在使用公共變量的任何地方都可能不可用。

ii。函數不能具有比其參數類型和返回類型更高的訪問級別,因爲該函數可用於其構成類型不可用於周圍代碼的情況。

我認爲你的代碼不符合第二個條件,因爲didSet觀察者函數的參數是打開的,但函數本身試圖改變一個fileprivate變量。