didSet 导致 EXC_BAD_ACCESS

didSet leads to 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 看起来不错。没有错误。 为什么?

我想答案就在这里:

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

请特别查看标题为 "Guiding Principle of Access Levels" 的部分,其中包含以下两点:

我。 public 变量不能定义为具有内部类型、file-private 或私有类型,因为该类型可能无法在使用 public 变量的任何地方使用。

二。函数的访问级别不能高于其参数类型和 return 类型,因为该函数可以在其组成类型对周围代码不可用的情况下使用。

我认为您的代码违反了第二个附带条件,因为 didSet 观察器函数的参数是打开的,但函数本身正在尝试更改 fileprivate 变量。

几个小时后 rebuilds/restart 问题消失了。不知道是什么原因。 Imo,XCode.

的错误