Objective C - OSX - forLoop给出不一致的结果

时间:2013-07-22 14:54:29

标签: objective-c macos

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

我有这个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];
}

日志:

enter image description here

enter image description here

UPDATE2:事实证明我错误地将自定义单元格子类化了,结果称它太多次了......我会标记为完整,因为你们都给了我很好的想法。我希望我们可以奖励多个点..

2 个答案:

答案 0 :(得分:5)

您的问题可能就在

thisDecade = thisDecade ++;

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

++thisDecade;

您要做的是未定义的。从第142页开始:http://www.slideshare.net/olvemaudal/deep-c

,看看这个

答案 1 :(得分:2)

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