我有一个NSMutable数组,该数组是从api调用填充的,并且其中有31个有效值。
如我们所见,它具有一个类对象的集合,其中包含4个属性。它们每个都分配有有效值。例如:dat,ancillary等。这在dispatch_aync中。
在主队列中,当我尝试更深入地调试问题时,我遍历了chart_data但我的EXC_BAD_ACCESS代码= 1。我发现我的NSmutable阵列损坏了。
这是我访问阵列时的屏幕截图。
分配给它的随机地址或值将破坏我的代码,因为我希望使用双精度和日期值。
在这两个事务之间,对chart_data没有任何操作。知道为什么会这样。直到今天,这种情况突然发生了,在这段时间内代码运行得非常好。
填充Nsmutable数组的代码
+(NSMutableArray*)GetData:(NSDictionary*)dataArray
{
daily_unit_Array = [[NSMutableArray alloc]init];
for (int i=0; i < 31; i++)
{
UnitCost *unit_cost = [[UnitCost alloc]init];
unit_cost.date = [keys objectAtIndex:i];
NSArray *unit_cost_value = [dataArray objectForKey:[keys objectAtIndex:i]];
unit_cost.val1 = [unit_cost_value valueForKey:@"val1"];
unit_cost.val2 = [unit_cost_value valueForKey:@"val2"];
unit_cost.val3 = [unit_cost_value valueForKey:@"val3"];
unit_cost.val4 = [unit_cost_value valueForKey:@"val4"];
[daily_unit_Array addObject:unit_cost];
}
return daily_unit_Array;
}
并将其返回给调用它的函数并将其分配给chart_data
附言:这是一个零星的问题,每10次发生8次。有时,当我运行该应用程序时,它会完美运行并显示我想要的内容。
注意:请注意。我昨天将Xcode更新为5.1 beta 4版本。但是我看来这可能不会引起问题,因为我尝试在旧版本的Xcode中运行相同的代码,并且可能重现该错误。
最佳答案
我终于找到了解决方案。
正如@trojafoe指出的那样,问题不在NSmutable Array中,而在其中的对象中。
我发现UnitCost对象的属性为(assign,nonatomic)
类型。我将它们更改为(retain,nonatomic)
后,问题就解决了...
我猜这些值没有保留。
关于ios - NsmutableArray在访问它时被损坏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21284864/