假设我有一个带有成员变量“myDictionary”的A类。
现在,如果我这样做:
myDictionary = [NSDictionary dictionary];
我知道默认情况下,类的成员属于强类型。所以myDictionary将在A类对象的生命周期中可用。这就是我对ARC的理解。
但是我在myDictionary上得到EXE_BAC_ACCESS
这真让我感到困惑。我是否需要做额外的事情才能避免myDictionary上的EXE_BAD_EXCESS
?因为上面的方法返回一个自动释放的对象。
先谢谢。
答案 0 :(得分:0)
如果您不使用ARC,那么您应该在任何时候使用+字典 需要一个自动释放的字典,并在你需要的时候+ alloc / init 你要坚持的字典(例如,把它放在一个 ivar),或者如果你只是想避免自动释放和 - 手动发布。
所以尝试这样实现:
myDictionary = [[NSDictionary alloc] init];
答案 1 :(得分:0)
此处最可能的错误是从多个线程访问myDictionary
。确保您始终正确访问ivar是您应始终将您的属性称为self.myDictionary
而不是直接引用_myDictionary
ivar的几个原因之一。当您需要使此线程安全时,这将确保您只需要一个地方来修复代码。
还有其他可能的方法来解决此错误,例如CFBridging...
函数的错误处理,但最常见的是多线程访问。