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

ティルが指摘したように、所有権修飾子 ( assign) は、ここで必要なものではありません。99%で代わりにNSNumber欲しい。copy

その後、アクセサ メソッドを使用します。

self.foodPriceTotal = ...

その宣言を .h ファイルに入れる理由NSNumber *foodPriceTotalはまったくありません。その行を削除するだけです。

メソッドに関してinitは、ロジックを再考することをお勧めします。ここで値のない数は何ですか? おそらくnil、同じくらい良く、はるかに明確です。

于 2012-09-30T16:33:25.620 に答える