EXEC_BAD_ACCESS(Code = 1)
问题描述:
一切工作正常,直到我添加了一个新的NSNUmber变量。EXEC_BAD_ACCESS(Code = 1)
我的.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(代码= 1),当我向上和向下滚动 -
犯错的人行 -
foodPriceTotal = [NSNumber numberWithFloat:([foodPriceTotal floatValue] + deliveryCharge)];
任何想法吗?
答
As Till指出,您的所有权限定符(assign
)不是您想要的。在99%与NSNumber
你想要copy
来代替。
后来的后来,使用访问方法:
self.foodPriceTotal = ...
没有理由把那NSNumber *foodPriceTotal
声明到您的.h文件中所有,只是删除该行。
关于您的init
方法,您可能需要重新考虑您的逻辑。这里没有任何价值的数字是什么?可能nil
是一样好,更清晰。
+0
谢谢Eiko和Till。我需要阅读更多关于所有权限定词的内容。但是你的建议解决了我的问题。 – nasaa
您可能想为'NSNumber'实例('foodPriceTotal')使用强或弱属性,但不能分配。 – Till
谢谢直到。 Upvoted你的评论 – nasaa
你使用ARC? –