0

我将 Json 数据解析为 NSDecimalNumber,如下所示

product.Price = [NSDecimalNumber decimalNumberWithDecimal:[[jProduct
objectForKey:@"Price"] decimalValue]];

这是一个循环,每个产品都被添加到一个数组中。最后我释放了 json 对象。

如果我在循环期间记录 product.Price 的值,则该值是正确的。然而,在应用程序生命周期的后期,我访问了数组中的一个产品并砰的一声,我得到了 EXC_BAD_ACCESS

这是一些奇怪的指针问题,回到了随后被释放的 json 数据吗?有任何想法吗?值得注意的是,我的 NSIntegers 和 NSStrings 的值很好。

4

1 回答 1

1

您没有显示所有相关代码,但我的猜测是Price属性的定义(应该以小写字母开头,BTW)没有retain关键字。结果是自动释放的对象从[NSDecimalNumber decimalNumberWithDecimal:...]简单地自动释放:-) 然后你的指针指向无效的内存。

该属性的声明应与此类似:

@property(retain) NSDecimal *Price;

如果retain缺少关键字,则只会存储指针,但该属性不会增加保留计数(告诉对象:我需要你留下来,直到我处理完你)。

于 2010-10-21T10:12:11.587 回答