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
看起来不错。没有错误。
为什么?
我想答案就在这里:
请特别查看标题为 "Guiding Principle of Access Levels" 的部分,其中包含以下两点:
我。 public 变量不能定义为具有内部类型、file-private 或私有类型,因为该类型可能无法在使用 public 变量的任何地方使用。
二。函数的访问级别不能高于其参数类型和 return 类型,因为该函数可以在其组成类型对周围代码不可用的情况下使用。
我认为您的代码违反了第二个附带条件,因为 didSet 观察器函数的参数是打开的,但函数本身正在尝试更改 fileprivate 变量。
几个小时后 rebuilds/restart 问题消失了。不知道是什么原因。 Imo,XCode.
的错误
如果我使用这个:
fileprivate var _saved = false
open var lat = 0.0 {
didSet {
_saved = false
}
}
导致 EXC_BAD_ACCESS
对于
moobj.lat = 0.0
但简单 open var lat = 0.0
看起来不错。没有错误。
为什么?
我想答案就在这里:
请特别查看标题为 "Guiding Principle of Access Levels" 的部分,其中包含以下两点:
我。 public 变量不能定义为具有内部类型、file-private 或私有类型,因为该类型可能无法在使用 public 变量的任何地方使用。
二。函数的访问级别不能高于其参数类型和 return 类型,因为该函数可以在其组成类型对周围代码不可用的情况下使用。
我认为您的代码违反了第二个附带条件,因为 didSet 观察器函数的参数是打开的,但函数本身正在尝试更改 fileprivate 变量。
几个小时后 rebuilds/restart 问题消失了。不知道是什么原因。 Imo,XCode.
的错误