0

モデルの NSMutableArray スタックにオブジェクトを追加しています。インターフェースは次のとおりです。

@interface calcModel ()
@property (nonatomic, strong) NSMutableArray *operandStack;

@end

そして実装:

@implementation calcModel
@synthesize operandStack = _operandStack;

- (NSMutableArray *)operandStack;
{
if (_operandStack == nil) _operandStack = [[NSMutableArray alloc]init];
return _operandStack;
}

この addobject メソッドは正常に機能します。

- (void)pushValue:(double)number;
{
[self.operandStack addObject:[NSNumber numberWithDouble:number]];
NSLog(@"Array: %@", self.operandStack);
}

しかし、これはアプリをクラッシュさせ、ログに「lldb」とだけ表示します:

- (void)pushOperator:(NSString *)operator;
{
[self.operandStack addObject:operator];
NSLog(@"Array: %@", self.operandStack);
}

このエラーの原因は何ですか?

4

1 に答える 1

3

NSStringあなたが追加しているのはおそらくnilです。これを行う:

- (void)pushOperator:(NSString *)operator {
    if (operator) {
        [self.operandStack addObject:operator];
        NSLog(@"Array: %@", self.operandStack);
    } else {
        NSLog(@"Oh no, it's nil.");
    }
}

その場合は、原因nilを突き止めて修正してください。または、追加する前に確認してください。

最初のメソッドがクラッシュしない理由は、 を初期化するNSNumberために使用できない double 値がないためnilです。

于 2012-11-20T00:38:56.157 に答える