NSMutableArray にプッシュすることができません
添付のコードを参照してください
#import "CalculatorBrain.h"
@implementation CalculatorBrain
@synthesize operandStack = _operandStack;
-(NSMutableArray*) operandStack{
if(self.operandStack == NULL){
self.operandStack = [[NSMutableArray alloc] init];
}
return self.operandStack;
}
-(void)setOperandStack:(NSMutableArray *)operandStack{
_operandStack = operandStack;
}
-(void) pushOperand:(double) operand{
[self.operandStack addObject:[NSNumber numberWithDouble:operand]];
int count = [self.operandStack count];
NSLog(@"Number pushed is %g", [[self.operandStack objectAtIndex:count - 1] doubleValue]);
}
-(double)popOperand{
int count = [self.operandStack count];
NSNumber* value = [self.operandStack objectAtIndex:count - 1];
double val = 0;
if(value){
val = [value doubleValue];
[self.operandStack removeLastObject];
}
NSLog(@"popped %g",val);
return val;
}
@end
アクションは次のように呼び出されます。
- (IBAction)enterPressed {
double mynumber= [self.display.text doubleValue];
NSLog(@"enter pressed....Number is %g", mynumber);
[self.Brain pushOperand:mynumber];
int count = [self.Brain.operandStack count];
NSLog(@"enter pressed... pusehed operand is %g", [[self.Brain.operandStack objectAtIndex:count - 1] doubleValue]);
self.amIInMiddleOfNumber = NO;
}
このプログラムを使用して得ている出力は
2012-07-31 22:30:53.838 Calculator[13408:c07] enter pressed....Number is 45
2012-07-31 22:30:53.840 Calculator[13408:c07] enter pressed... pusehed operand is 0
私もlastObjectを試しましたが、うまくいきませんでした。
ここで編集 ----------
これを追加してみました
-(CalculatorBrain *)Brain{
if(self.Brain == NULL){
self.Brain = [[CalculatorBrain alloc] init];
}
return self.Brain;
}
そして今、私の出力は
2012-08-01 21:03:00.282 Calculator[13706:c07] enter pressed....Number is 23
その後、アプリ全体がクラッシュします
ありがとう。同じプログラムが xcode と lion で動作しているのを見ました。