RPN калькулятор на iOS - не могу понять, почему он падает - PullRequest
0 голосов
/ 12 декабря 2011

Я новичок в 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 не может получить доступ?!

1 Ответ

0 голосов
/ 07 января 2012

о, ребята, лол.извините за это, полностью моя вина: не видел, что я включил Точки останова - так что это абсолютно правильно, что приложение останавливается.думаю, мне нужно немного поспать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...