我正在将Json Data解析为NSDecimalNumber,如下所示
product.Price = [NSDecimalNumber decimalNumberWithDecimal:[[jProduct
objectForKey:@"Price"] decimalValue]];
这是一个循环,每个产品都被添加到一个数组中。最后我释放了json对象。
如果我在循环期间记录product.Price的值,则值是正确的。但是在应用程序生命周期的后期我访问数组中的产品并发出声音,我得到 EXC_BAD_ACCESS 。
这是一些奇怪的指针问题回到json数据然后被释放?有任何想法吗?值得注意的是,我的NSIntegers和NSStrings的值很好。
答案 0 :(得分:1)
您没有显示所有相关代码,但我的猜测是Price
属性的定义(应以小写字母BTW开头)没有retain
关键字。结果是来自[NSDecimalNumber decimalNumberWithDecimal:...]
的自动释放对象只是自动释放:-)然后你的指针指向无效的内存。
该属性应声明类似于:
@property(retain) NSDecimal *Price;
如果缺少retain
关键字,那么只会存储指针,但属性不会增加保留计数(告诉对象:我需要你留下来,直到我完成了你)。