Iphone 在objective-c中通过多种方法向数组添加项
我不熟悉这个网站,也不熟悉iphone的开发。我通过几本不同的书和斯坦福大学iOS开发在线课程学习Objective-C 当前的项目是构建一个计算器(已经完成),但是现在我们必须添加一个数组来跟踪每个操作数或操作。我试图通过使用“operationPressed”方法和“SetOperator”方法添加一段代码来实现这一点,但没有向数组中添加任何内容 在我的.h文件中,我声明了NSMutableArray*internalExpression的一个实例变量,这是我的.m文件的代码Iphone 在objective-c中通过多种方法向数组添加项,iphone,objective-c,arrays,nsmutablearray,Iphone,Objective C,Arrays,Nsmutablearray,我不熟悉这个网站,也不熟悉iphone的开发。我通过几本不同的书和斯坦福大学iOS开发在线课程学习Objective-C 当前的项目是构建一个计算器(已经完成),但是现在我们必须添加一个数组来跟踪每个操作数或操作。我试图通过使用“operationPressed”方法和“SetOperator”方法添加一段代码来实现这一点,但没有向数组中添加任何内容 在我的.h文件中,我声明了NSMutableArray*internalExpression的一个实例变量,这是我的.m文件的代码 - (void
- (void) setOperand: (double) anOperand
{
operand = anoperand;
NSNumber *currentOperand = [NSNumber numberWithFloat:operand];
[internalExpression addObject:currentOperand];
}
set操作数工作正常,currentOperator设置正确(使用NSLog检查),但没有任何内容添加到NSMutableArray(也使用NSLog和数组计数方法检查)
我错过了什么
谢谢 声明NSMutableArray是不够的,还必须实例化它。在
addObject:
调用之前添加此行
if(internalExpression == nil) internalExpression = [NSMutableArray array];
如果在头文件中有这样声明的属性:
@property (nonatomic, retain) NSMutableArray *internalExpression; // non ARC
或
您必须使用分配的对象初始化属性:
NSMutableArray *myMutableArray = [[NSMutableArray alloc] init];
[self setInternalExpression:myMutableArray];
[myMutableArray release]; // this line only if you're not using ARC.
如果它只是一个实例变量,您只需直接执行:
_internalExpression = [[NSMutableArray alloc] init];
请记住,如果您没有使用ARC,请在使用完对象后释放该对象,或者在类的dealloc方法中释放该对象
关于。您是否确实创建了NSMutableArray的实例并将其分配给ivar(在
init
或等效文件中)?
_internalExpression = [[NSMutableArray alloc] init];