0

我正在尝试根据他们的十年来列出年份。

我有这个forLoop:

for (int i = 0; i <= 9; i++) {

        NSString *thisYear = [NSString stringWithFormat: @"%ld", thisDecade];
        //NSLog (@"(long)selectedDecade++ %ld", (long)selectedDecade++ );
        thisDecade = thisDecade ++;
        NSLog (@"thisDecade %ld", thisDecade);
}

我在按钮标签中使用结果。记录输出显示标签文本和循环结果之间存在差异,我脖子酸痛试图找出原因..是循环中的东西吗?谢谢

日志:

[AppDelegate setYears]
selectedDecade: 1970
thisDecade 1971

 RightSideBar aTitle is 1970
thisDecade 1972


 RightSideBar aTitle is 1971
 thisDecade 1973

 RightSideBar aTitle is 1972
 thisDecade 1974

 RightSideBar aTitle is 1973
 thisDecade 1975

更新 - 我感谢所有的帮助,但我仍然很难过。我附上了日志的截图,以及产生它们的代码..再次感谢..

-(void)addButtonWithTitle:(NSString*)aTitle image:(NSImage*)image alternateImage:

(NSImage*)alternateImage
{
    //NSLog(@"%s", __FUNCTION__);
    NSButtonCell * cell = [self addButton];
    [cell setTitle:aTitle];
    NSLog(@"RightSideBar aTitle is %@", aTitle); << see the logs vs the screenshot
    [cell setImage:image];
    [cell setAlternateImage:alternateImage];
}

日志:

在此处输入图像描述

在此处输入图像描述

UPDATE2:事实证明,我错误地对自定义单元进行了子类化,因此,调用它的次数太多了..我将标记为完整,因为你们都给了我很好的想法。我希望我们能奖励多点..

4

2 回答 2

5

你的问题可能就在这条线上

thisDecade = thisDecade ++;

您应该记住,递增和递减运算符 ( ++, --) 已经将新值存储在变量中。所以这没关系:

++thisDecade;

你试图做的是未定义的。看看这个,从第 142 片开始:http ://www.slideshare.net/olvemaudal/deep-c

于 2013-07-22T15:02:35.193 回答
2

thisYear为(可能是您用来为按钮命名的)创建的所有字符串将关闭一年,因为您thisDecade在使用它来格式化字符串后增加了变量。我相信您应该在 NSString 格式化之前移动增量,或者在 NSLog 语句之后移动它。此外,您只需要编写thisDecade++;来增加变量。

于 2013-07-22T15:12:00.307 回答