私の理解では、自己は現在のクラスを指し、自己の後にドットを使用すると、そのプロパティの1つを使用することになります。ここのコードにはself.popOperand
、popOpernad がプロパティでないかどうかわからないという用途があります。私が理解していないもう1つのことは、なぜ
[self pushOperand:result];
機能し、[self.pushOperand:result];
機能しないのかということです。
#import "Calcbrain.h"
@interface Calcbrain()
@property (nonatomic,strong) NSMutableArray *operandStack;
@end
@implementation Calcbrain
@synthesize operandStack = _operandStack;
-(NSMutableArray *) operandStack
{
if(_operandStack == nil) _operandStack = [[NSMutableArray alloc]init];
return _operandStack;
}
-(double)popOperand
{
NSNumber *objectNum = [self.operandStack lastObject];
if (objectNum)[self.operandStack removeLastObject];
return [objectNum doubleValue];
}
/*-(void) setOperandStack:(NSMutableArray *)operandStack
{
_operandStack = operandStack;
}*/
-(void)pushOperand:(double)opernand
{
[self.operandStack addObject:[NSNumber numberWithDouble:opernand]];
}
-(double)performOperation:(NSString *)operation
{
double result=0;
if([operation isEqualToString:@"+"])
{
result = self.popOperand + self.popOperand;
}
else if ([@"*" isEqualToString:operation])
{
result = self.popOperand * self.popOperand;
}
[self pushOperand:result];
return result;
}
@end