1

我在 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" 。我将错误的根源追溯到上面显示的方法,发现在方法的本地范围内使用计算属性会导致问题。只需将其更改为存储属性即可解决问题。

但是有人知道为什么会这样吗?为什么我不能在本地方法范围内使用计算属性?

4

0 回答 0