在我添加新的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)];
请问好吗?
答案 0 :(得分:3)
正如Till所指出的,您的所有权限定符(assign
)不是您想要的。 99%的NSNumber
copy
代替self.foodPriceTotal = ...
。
然后,使用访问器方法:
NSNumber *foodPriceTotal
没有理由将init
声明放入.h文件中,只需删除该行。
关于您的nil
方法,您可能想重新考虑一下您的逻辑。什么是没有任何价值的数字?可能{{1}}同样好,也更清晰。