Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 9.0-导致EXC\u访问错误的NSMutableDictionary_Ios_Objective C_Ios9_Nsmutabledictionary - Fatal编程技术网

iOS 9.0-导致EXC\u访问错误的NSMutableDictionary

iOS 9.0-导致EXC\u访问错误的NSMutableDictionary,ios,objective-c,ios9,nsmutabledictionary,Ios,Objective C,Ios9,Nsmutabledictionary,我的应用程序包含一个表示一般数据的单例类。后者包含以下原子属性: // .h file @property (atomic, strong) NSMutableDictionary *dataDictionary; // .m file @synthesize dataDictionary; 字典在不同的线程(setter和getter)上同时使用,在ios6.0-8.4上正常工作,没有任何崩溃。 最近我在iOS 9.0模拟器上运行了这个应用程序,它在调用dictionarysetObjec

我的应用程序包含一个表示一般数据的单例类。后者包含以下原子属性:

// .h file
@property (atomic, strong) NSMutableDictionary *dataDictionary;

// .m file
@synthesize dataDictionary;
字典在不同的线程(setter和getter)上同时使用,在ios6.0-8.4上正常工作,没有任何崩溃。 最近我在iOS 9.0模拟器上运行了这个应用程序,它在调用dictionary
setObject:forKey:
方法的任意代码中崩溃(EXC\u BAD\u ACCESS)

  • 有人知道iOS 9.0中的哪些变化会导致这些崩溃吗
  • 有什么线索可以解决这个问题吗

  • 属性上的原子属性
    并不意味着您认为它的功能
    atomic
    意味着属性值本身(即指针)不受并行访问的保护,但它根本不保护字典的内容

    如果您的代码在以前版本的iOS上运行,那么这完全是侥幸。如果允许多个线程以这种方式访问单个
    NSMutableDictionary
    ,则代码将随机崩溃


    您需要在这些多线程之间添加某种类型的锁定规则。

    我认为您应该使用非原子而不是原子。

    检查字典,它的键可能有null值。您的意思是value为null或key为null?@iOS_DK,value和key不为null(当然)。非原子也会发生同样的行为。