Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在objective-c中通过多种方法向数组添加项_Iphone_Objective C_Arrays_Nsmutablearray - Fatal编程技术网

Iphone 在objective-c中通过多种方法向数组添加项

Iphone 在objective-c中通过多种方法向数组添加项,iphone,objective-c,arrays,nsmutablearray,Iphone,Objective C,Arrays,Nsmutablearray,我不熟悉这个网站,也不熟悉iphone的开发。我通过几本不同的书和斯坦福大学iOS开发在线课程学习Objective-C 当前的项目是构建一个计算器(已经完成),但是现在我们必须添加一个数组来跟踪每个操作数或操作。我试图通过使用“operationPressed”方法和“SetOperator”方法添加一段代码来实现这一点,但没有向数组中添加任何内容 在我的.h文件中,我声明了NSMutableArray*internalExpression的一个实例变量,这是我的.m文件的代码 - (void

我不熟悉这个网站,也不熟悉iphone的开发。我通过几本不同的书和斯坦福大学iOS开发在线课程学习Objective-C

当前的项目是构建一个计算器(已经完成),但是现在我们必须添加一个数组来跟踪每个操作数或操作。我试图通过使用“operationPressed”方法和“SetOperator”方法添加一段代码来实现这一点,但没有向数组中添加任何内容

在我的.h文件中,我声明了NSMutableArray*internalExpression的一个实例变量,这是我的.m文件的代码

- (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];