我遇到了一个非常奇怪的问题,至少对我来说,无法弄清楚解决方案是什么。问题是我在接口中声明了两个nsMutableArrays
NSMutableArray *lastItemForFormula;
NSMutableArray *lastItemForExpression;
@property (nonatomic, retain) NSMutableArray *lastItemForFormula;
@property (nonatomic, retain) NSMutableArray *lastItemForExpression;
然后在实现中合成它们:
@synthesize lastItemForFormula;
@synthesize lastItemForExpression;
尝试使用它我的功能如下:
-(void)elementClicked:(id)sender {
UIButton *btnClicked=(UIButton*)sender;
NSString* formula=[label text];
NSString *stringToBeConcatenated=[elements objectAtIndex:btnClicked.tag];
formula=[formula stringByAppendingString:stringToBeConcatenated];
[lastItemForFormula addObject:[formula copy]]; //First
[label setText:formula];
stringToBeConcatenated=[elements objectAtIndex:btnClicked.tag+1];
if ([labelExpression.text length]==0) {
[lastItemForExpression addObject:[stringToBeConcatenated copy]]; //Second
[labelExpression setText:[lastItemForFormula objectAtIndex:[lastItemForFormula count]]];
}
else {
[lastItemForExpression addObject:[[NSString stringWithFormat:@"%@+%@",[labelExpression text], stringToBeConcatenated] copy]]; //Third
[labelExpression setText:[lastItemForFormula objectAtIndex:[lastItemForFormula count]]];
}
}
但是当我调试程序时,我在两个数组中都没有得到任何东西......当悬停在两个数组上时,不断显示0x0。我确信这很可能是内存管理问题。我将不得不寻求任何帮助。
答案 0 :(得分:2)
您永远不会初始化数组,因此您将addObject消息发送到nil。
在尝试将对象添加到数组之前,请调用拥有数组的类的init:
lastItemForFormula = [NSMutableArray new];
lastItemForExpression = [NSMutableArray new];
然后一定要在dealloc中释放数组。