Dictionary 使用字典在iOS 8.1上执行错误访问
我有一个可以通过结构中的静态变量访问的对象(解决目前swift中缺少类变量支持的问题),结构如下:Dictionary 使用字典在iOS 8.1上执行错误访问,dictionary,swift,ios8.1,Dictionary,Swift,Ios8.1,我有一个可以通过结构中的静态变量访问的对象(解决目前swift中缺少类变量支持的问题),结构如下: struct Constants{ static var myObj = MyObject() } MyObject中有一个字典,如下所示: class MyObject{ private var params = Dictionary<String,AnyObject>() func addParam(key:String, value:AnyObject
struct Constants{
static var myObj = MyObject()
}
MyObject中有一个字典,如下所示:
class MyObject{
private var params = Dictionary<String,AnyObject>()
func addParam(key:String, value:AnyObject){
params[key] = value
}
}
类MyObject{
private var params=Dictionary()
func addParam(键:字符串,值:AnyObject){
参数[键]=值
}
}
现在,对于Contants.myObj.addParam(“param”,value:123)
的第一个对象调用,一切正常,params有内容[“param”:123]
。在第二次调用Contants.myObj.addParam(“param”,value:456)
时,我获得了一个EXC\u BAD\u访问权限
不过这里有一个关键点,这只发生在iOS 8.1中。另外,如果我添加一行let stupidHack=self.params
作为我的addParam
方法的第一行,它工作正常。我的假设是它处理字典的易变性。let可能会以某种方式触发字典在初始化后再次可变
以前有没有其他人遇到过这个问题?你知道怎么修吗
谢谢 看起来像是一个编译器错误 您是否尝试过在发布和调试之间切换,然后重新构建?如果调试工作正常但未发布,则可能表明存在编译器/优化器错误 它是否也发生在模拟器中
你的代码在iOS 8.1和XCode 6.1上对我有效。碰巧,你有64Gb的iPhone 6吗? 我有一个问题,我两次使用字典也有同样的问题
在新闻中(科技新闻…),我了解到东芝为这款iPhone型号提供的有缺陷的内存模块可能会导致内存分配不正确。面临类似的swift代码问题,并通过在应用程序目标的构建设置中禁用swift编译器优化来修复此类问题。尝试调整swift编译器优化级别设置为“无”(生成设置)
我遇到了一个类似的问题,一个类被无缘无故地释放,这主要是一个编译器错误,就像Lee所说的。它在模拟器中运行良好,但在物理设备(IPhone 6)上运行不正常。这个问题只发生在发布模式下,非常奇怪,这似乎是某种错误。然而,我上面发布的let hack确实纠正了这个问题。我的假设是它处理字典的易变性。let可能会在初始化后以某种方式触发字典,使其再次可变。有人知道这是否已向苹果报告/已在Swift 1.2中修复?通过将“Swift编译器-代码生成”下的优化级别更改为“无”,可以在最新的XCode中修复此错误“最快”似乎是导致编译器错误的原因。我正在构建的Mac应用程序也有同样的问题。不管发生什么事,我的车在第三次的时候就撞坏了。你让愚蠢的黑客方法对我有用。真奇怪,不过谢谢你!