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并解决它。或者在添加之前检查它。

第一种方法不崩溃的原因是,因为没有不能用来初始化an的double值NSNumber,所以永远不会nil

于 2012-11-20T00:38:56.157 回答