цель c потерять значение NSDecimalNumber при доступе из другого метода - PullRequest
0 голосов
/ 21 октября 2010

Я анализирую данные Json в NSDecimalNumber следующим образом

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

Это цикл с каждым продуктом, добавляемым в массив. В конце я освобождаю объект json.

Если я зарегистрирую значение product.Price во время цикла, значение будет правильным. Однако позже на жизненном цикле приложения я получаю доступ к продукту в массиве и взрывах, я получаю EXC_BAD_ACCESS .

это какая-то странная проблема с указателем на данные json, которые затем высвобождаются? есть идеи? Стоит отметить, что значения моих NSIntegers и NSStrings в порядке.

1 Ответ

1 голос
/ 21 октября 2010

Вы не показывали весь соответствующий код, но я предполагаю, что определение свойства Price (которое должно начинаться со строчной буквы, BTW) не имеет ключевого слова retain. В результате автоматически освобожденный объект из [NSDecimalNumber decimalNumberWithDecimal:...] просто автоматически освобождается :-) И тогда ваш указатель указывает на недопустимую память.

Свойство должно быть объявлено похожим на это:

@property(retain) NSDecimal *Price;

Если ключевое слово retain отсутствует, то будет сохранен только указатель, но свойство не увеличит количество сохраняемых объектов (скажите объекту: мне нужно, чтобы вы остались, пока я не закончу с вами).

...