Я новичок в objectiv-c и попробую выучить его через этот лекционный подкаст из Стэнфорда: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/
очень хорошая вещь, но у меня проблема с сборкой rpn-калькулятора. происходит сбой при использовании popOperand.
вот моя модель:
#import "CalculatorBrain.h"
@interface CalculatorBrain()
@property (nonatomic,strong) NSMutableArray *operandStack;
@end
@implementation CalculatorBrain
@synthesize operandStack = _operandStack;
-(NSMutableArray *)operandStack {
if(_operandStack == nil) {
_operandStack = [[NSMutableArray alloc] init];
NSLog(@"zing");
};
return _operandStack;
}
- (void) pushOperand:(double)operand {
NSLog([[self.operandStack lastObject] stringValue] );
[self.operandStack addObject:[NSNumber numberWithDouble:operand]];
NSLog(@"----");
NSLog([[self.operandStack lastObject] stringValue] );
};
-(double) popOperand {
NSNumber* operandObject = [self.operandStack lastObject];
if(operandObject) [self.operandStack removeLastObject];
return [operandObject doubleValue];
}
- (double) performOperation:(NSString *)operation{
double result = 0;
if([operation isEqualToString:@"+"]) {
result = [self popOperand] + [self popOperand];
} else if([operation isEqualToString:@"*"]) {
result = [self popOperand] * [self popOperand];
} else if([operation isEqualToString:@"-"]) {
double subtrahend = [self popOperand];
result = [self popOperand] - subtrahend;
} else if([operation isEqualToString:@"/"]) {
double divisor = [self popOperand];
if(divisor) result = [self popOperand] / divisor;
}
[self pushOperand:result];
return result;
};
@end
действительно не знаю как. операнды в стеке, но кажется, что popOperand не может получить доступ?!