首页新闻找找看学习计划

IOS数据放入数组没反应

0
悬赏园豆:20 [待解决问题]

@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都没问题啊?

pei5174的主页 pei5174 | 初学一级 | 园豆:182
提问于:2012-07-14 11:44
< >
分享
所有回答(2)
0

能否将代码重新整理发布出来。

坤坤 | 园豆:919 (小虾三级) | 2012-07-20 15:35

@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,请问为什么?

支持(0) 反对(0) pei5174 | 园豆:182 (初学一级) | 2012-07-21 00:21
0

第一个添加对象的语句

[_programStack addObject:newObject];

因为使用的是私有成员变量,而不是对象属性,所以不会调用属性的getter方法。

使用

[self.programStack addObject:newObject];

就可以了。

趣味苹果开发 | 园豆:208 (菜鸟二级) | 2012-10-29 13:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册