带有字典的iOS 8.1上的EXC_BAD_ACCESS

ste*_*ris 14 dictionary swift ios8.1

我有一个可以通过结构中的静态var访问的对象(现在swift中缺少类变量支持的解决方法),结构如下:

struct Constants{
    static var myObj = MyObject()
}
Run Code Online (Sandbox Code Playgroud)

MyObject有一个字典就像这样:

class MyObject{
    private var params = Dictionary<String,AnyObject>()

    func addParam(key:String, value:AnyObject){
        params[key] = value
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,对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可能会以某种方式触发字典在初始化后再次变为可变.

还有其他人遇到过这个问题吗?有关如何解决它的任何想法?

谢谢!

whi*_*and 7

看起来像编译器错误.

您是否尝试在Release和Debug之间切换然后重建?如果调试有效但没有释放,则可能表示编译器/优化器错误.

它也发生在模拟器中吗?

您的代码适用于iOS 8.1和XCode 6.1.