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)]; 

任何想法吗?

+2

您可能想为'NSNumber'实例('foodPriceTotal')使用强或弱属性,但不能分配。 – Till

+0

谢谢直到。 Upvoted你的评论 – nasaa

+0

你使用ARC? –

As Till指出,您的所有权限定符(assign)不是您想要的。在99%与NSNumber你想要copy来代替。

后来的后来,使用访问方法:

self.foodPriceTotal = ... 

没有理由把那NSNumber *foodPriceTotal声明到您的.h文件中所有,只是删除该行。

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

+0

谢谢Eiko和Till。我需要阅读更多关于所有权限定词的内容。但是你的建议解决了我的问题。 – nasaa