EXC_BAD_ACCESS(代码= 1)

时间:2012-09-30 16:22:46

标签: objective-c ios

在我添加新的NSNUmber变量之前,一切正常。

我的.h文件看起来有这个 -

NSNumber *foodPriceTotal;
@property (assign, readwrite) NSNumber *foodPriceTotal;

在我的.m文件中我有 -

@synthesize foodPriceTotal;

在我的Initwithnibname方法中,我这样做 -

foodPriceTotal = [[NSNumber alloc] init];

在我的cellForRowAtIndexPath函数中,我这样做

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
CGFloat deliveryCharge = [prefs floatForKey:@"deliveryCharge"];
foodPriceTotal = [NSNumber numberWithFloat:([foodPriceTotal floatValue] + deliveryCharge)];

当我向上和向下滚动时,我收到错误EXEC_BAD_ACCESS(Code = 1) -

错误的行是 -

foodPriceTotal = [NSNumber numberWithFloat:([foodPriceTotal floatValue] + deliveryCharge)];

请问好吗?

1 个答案:

答案 0 :(得分:3)

正如Till所指出的,您的所有权限定符(assign)不是您想要的。 99%的NSNumber copy代替self.foodPriceTotal = ...

然后,使用访问器方法:

NSNumber *foodPriceTotal

没有理由将init声明放入.h文件中,只需删除该行。

关于您的nil方法,您可能想重新考虑一下您的逻辑。什么是没有任何价值的数字?可能{{1}}同样好,也更清晰。