objective c losing NSDecimalNumber value when accessed from another method
I am parsing Json Data into an NSDecimalNumber as follows
开发者_开发问答product.Price = [NSDecimalNumber decimalNumberWithDecimal:[[jProduct
objectForKey:@"Price"] decimalValue]];
This is in a loop with each product being added to an array. At the end I release the json object.
If I Log the value of product.Price during the loop the value is correct. However later on the the application lifecycle I access a product in the array and bang, I get EXC_BAD_ACCESS.
is this some odd pointer issue back to the json data which is then being released? any ideas? It's worth noting that the values of my NSIntegers and NSStrings are fine.
You didn't show all the relevant code, but my guess is that the definition of the Price
property (which should start with a lower case letter, BTW) does not have the retain
keyword. The result is that the autoreleased object from [NSDecimalNumber decimalNumberWithDecimal:...]
simply gets autoreleased :-) And then your pointer is pointing to invalid memory.
The property should be declared similar to this:
@property(retain) NSDecimal *Price;
If the retain
keyword is missing then only the pointer will be stored, but the property will not increase the retain count (tell the object: I'll need you to stay around until I'm done with you).
精彩评论