0

一切正常,直到我添加了一个新的 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)];

请问有什么想法吗?

4

1 回答 1

3

正如 Till 指出的那样,您的所有权限定符 ( assign) 不是您想要的。在 99% 用NSNumber你想要的copy代替。

然后稍后,使用访问器方法:

self.foodPriceTotal = ...

根本没有理由将该NSNumber *foodPriceTotal声明放入您的 .h 文件中,只需删除该行即可。

关于您的init方法,您可能需要重新考虑您的逻辑。这里没有任何值的数字是什么?可能nil同样好,更清晰。

于 2012-09-30T16:33:25.620 回答