@property (nonatomic,strong) NSMutableArray *programStack;
@synthesize programStack = _programStack; -(NSMutableArray *)programStack{ if(!_programStack){ _programStack = [[NSMutableArray alloc]init]; } return _programStack; }
- (IBAction)enterPressed:(id)sender { double digit = [self.display.text doubleValue]; NSNumber *newObject = [NSNumber numberWithDouble:digit]; [_programStack addObject:newObject]; id object = [_programStack lastObject]; double value = [newObject doubleValue]; double value1 = [object doubleValue]; double count = [_programStack count]; NSLog(@"%g value is %g value1 is %g count is %g",digit,value,value1,count); }
最后输出,digit没有问题,但是value,value1,count都是0。
请问这是为什么?@property跟@synthsize都没问题啊?
能否将代码重新整理发布出来。
@property (nonatomic,strong) NSMutableArray *programStack;
@synthesize programStack = _programStack;
@synthesize display = _display;//display 是一个UILable
-(NSMutableArray *)programStack{
if(!_programStack){ _programStack = [[NSMutableArray alloc]init]; }
return _programStack;
}
- (IBAction)enterPressed:(id)sender
{
double digit = [self.display.text doubleValue];
NSNumber *newObject = [NSNumber numberWithDouble:digit];
[_programStack addObject:newObject];
id object = [_programStack lastObject];
double value = [newObject doubleValue];
double value1 = [object doubleValue];
double count = [_programStack count];
NSLog(@"digit is %g, value is %g, value1 is %g, count is %g",digit,value,value1,count);
}
运行结果,digit跟value都正确显示lable上的text,而value1跟count都显示为0,请问为什么?
第一个添加对象的语句
[_programStack addObject:newObject];
因为使用的是私有成员变量,而不是对象属性,所以不会调用属性的getter方法。
使用
[self.programStack addObject:newObject];
就可以了。