我有一个可通过结构中的静态变量访问的对象(解决方法是目前在 swift 中缺少类变量支持),结构如下:
struct Constants{
static var myObj = MyObject()
}
MyObject 中有一个字典,如下所示:
class MyObject{
private var params = Dictionary<String,AnyObject>()
func addParam(key:String, value:AnyObject){
params[key] = value
}
}
现在第一次为 Contants.myObj.addParam("param", value:123)
调用这个对象时,一切都很好,params 有内容 ["param":123]
。在第二次调用 Contants.myObj.addParam("param", value:456)
时,我得到一个 EXC_BAD_ACCESS。
但问题是,这只发生在 iOS 8.1 中。此外,如果我将行 let stupidHack = self.params
添加为我的 addParam
方法的第一行,它工作正常。我的假设是它处理字典的可变性。 let 可能会以某种方式触发字典在初始化后再次可变。
有没有其他人遇到过这个问题?知道如何解决吗?
谢谢!
最佳答案
看起来像是一个编译器错误。
您是否尝试过在 Release 和 Debug 之间切换然后重建?如果调试有效但未发布,则可能表示存在编译器/优化器错误。
它是否也发生在模拟器中?
你的代码适用于 iOS 8.1 和 XCode 6.1。
关于dictionary - 带有字典的 iOS 8.1 上的 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26809986/