当从另一个方法访问时,objective c丢失NSDecimalNumber值

时间:2010-10-21 09:03:33

标签: objective-c exc-bad-access nsdecimalnumber

我正在将Json Data解析为NSDecimalNumber,如下所示

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

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

如果我在循环期间记录product.Price的值,则值是正确的。但是在应用程序生命周期的后期我访问数组中的产品并发出声音,我得到 EXC_BAD_ACCESS

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

1 个答案:

答案 0 :(得分:1)

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

该属性应声明类似于:

@property(retain) NSDecimal *Price;

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