使用[NSDecimalNumber stringValue]进行硬崩溃

时间:2010-02-27 17:27:21

标签: iphone nsnumber

当我尝试访问我的NSDecimalNumber amount_before_current_year的任何属性时,我的应用程序崩溃:

[amount_before_current_year stringValue]
Program received signal:  “EXC_BAD_ACCESS”.

对象是NSDecimalNumber,如附图所示。

我在viewDidLoad中创建了它,它存在于头文件中:

.h
...
    NSDecimalNumber *amount_before_current_year;
...
@property (nonatomic, retain) NSDecimalNumber *amount_before_current_year;
...

也在实现文件中:

@synthesize amount_before_current_year;


    amount_before_current_year = [NSDecimalNumber decimalNumberWithString:@"100.00"];

在这里我再次称呼它:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

NSString *test = [amount_before_current_year stringValue]; // HARD CRASH !!!

所以,我现在不知道该怎么做,我花了几个小时的时间......

任何想法??????

感谢, 河 alt text

1 个答案:

答案 0 :(得分:3)

您需要在分配时保留amount_before_current_year,或使用点符号分配给它:

self.amount_before_current_year = [NSDecimalNumber decimalNumberWithString:@"100.00"]

由于您使用retain属性声明了属性,因此合成的setter将自动发送保留消息,并释放任何先前的值。我推荐这种方法。