我将对象添加到模型中的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);
}
是什么导致此错误?
最佳答案
您要添加的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
的双精度值,所以它永远不会是nil
。