繁体   English   中英

作为值添加到NSMutableDictionary的NSNumbers变为空

[英]NSNumbers being added as values to NSMutableDictionary become nulls

我有一段代码可以将对象的字典构造为键,而将操作代码(例如添加/更新/删除)构造为值。

最近,无论是使用iOS 6还是随着“ zee Germans”的到来,它都崩溃了。 值是构造的,偶尔会添加,但是大多数时候,我会得到一个充满(空)值的字典。

for (int i = 0; i < newArray.count; i++)
{
    if (![oldArray containsObject:[newArray objectAtIndex:i]])
    {
        NSNumber *opNumber = [NSNumber numberWithInt:(int)kInsertOperation];
        [_operationsForRows setObject:opNumber forKey:[newArray objectAtIndex:i]];
    }
    else ...
}

我已经用中间变量和将枚举值显式转换为int修饰了代码,并且变得更加困惑。 打印出结果字典可得到:

{
"<Order: 0x8aad980>" = (null);
"<Order: 0x8aad7a0>" = (null);
}

谁能解释,我在这里想念什么? 字典甚至不应该包含null,应该吗?

此代码在ARC下。

NSMutableDictionary已在主线程上初始化,但仅在单个辅助线程上使用。

有时,可以正确添加一两个对象。 说10% 从那以后我尝试过的是:

  • 我已将字典初始化移至与用法相同的线程。 哇,正确地添加了90-95%的对象,但是到处都是null。
  • 我已经将所有可能的NSNumbers保存在类字段中。 在主线程上创建字典和数字后,成功率是0%,比我开始时要低。
  • 在类字段中使用当前线程初始化的字典和主线程号,我再次达到90-95%。

哭泣,哭泣...看起来像整个地方的重写。

尝试使用NSMutableDictionary而不是NSDictionary。

两者之间的区别在于,您可以在初始化之后修改NSMutableDictionary ,而设置NSDictionary

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM