Nsmutablearray在访问它时被破坏了

时间:2014-01-22 13:55:01

标签: ios iphone xcode nsmutablearray shinobi

我有一个NSMutable数组,它从api调用中填充,并且有31个有效值。

enter image description here

我们可以看到它有一个类对象的集合,其中包含4个属性。它们中的每一个都分配有有效值。例如:dat,辅助等。这是在dispatch_aync。

在主队列中,我正在遍历chart_data但我的EXC_BAD_ACCESS代码= 1,当我试图深入调试此问题时。我发现我的NSmutable数组已经腐败了。

以下是我访问数组时的屏幕截图。

enter image description here

为它分配了随机地址或值,这会破坏我的代码,因为我期望双倍和日期值。

这两笔交易之间的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

P.S:这是一个零星的问题,每10次发生8次。有时,当我运行应用程序时,它完美地运行并向我显示我想要的内容。 注意:只是一个注释。我昨天将我的Xcode更新为5.1 beta 4版本。但我似乎不会这会导致问题,因为我尝试在较旧版本的Xcode中运行相同的代码,我可以重现错误。

2 个答案:

答案 0 :(得分:3)

我终于找到了解决方案。 正如@trojafoe指出的那样,问题不在于NSmutable Array,而在于它们内部的对象。 我发现UnitCost对象的属性是(assign,nonatomic)类型。我一改为(retain,nonatomic),问题就解决了......

我猜这些值没有被保留。

答案 1 :(得分:0)

使用NSArray *并复制。

NSArray *chart_data = [[HttpMethods GetChartDataPost:1] copy];