我在 Swift 3 中使用了下面的代码,它运行良好......
func postObject(toCategories categories: [String], object: Object){
var postedToCategory: Bool {
if categories.count > 1 {
return true
} else if categories[0] != "memes with friends" {
return true
}
return false
}
var json = object.jsonified
json["postedToCategory"] = postedToCategory
doSomething(dict: json)
}
struct Object {
var postedToCategory: Bool
var name: String
var jsonified: [String: Any] {
var dict = [String: Any]()
dict["name"] = self.name
dict["postedToCategory"] = self.postedToCategory
return dict
}
init(postedToCategory: Bool, name: String){
self.postedToCategory = postedToCategory
self.name = name
}
}
但是,一旦我更新到 Swift 3.1,我不断收到 Swift 编译错误 -> "command failed due to signal: segmentation fault 11" 。我将错误的根源追溯到上面显示的方法,发现在方法的本地范围内使用计算属性会导致问题。只需将其更改为存储属性即可解决问题。
但是有人知道为什么会这样吗?为什么我不能在本地方法范围内使用计算属性?