从int中减去1表现得非常奇怪

时间:2013-03-19 01:19:34

标签: iphone objective-c

这似乎是一个非常愚蠢的问题。但是我想要做的就是从我的int中减去1

    int *subtractor = [[[NSUserDefaults standardUserDefaults]objectForKey:@"numberOfAlerts"] intValue];
    NSLog(@"%i", subtractor);
    subtractor--;
    NSLog(@"%d", subtractor);
    NSNumber *savedNumber = [NSNumber numberWithInt:subtractor];
    [[NSUserDefaults standardUserDefaults]setObject:savedNumber forKey:@"numberOfAlerts"];
    [[NSUserDefaults standardUserDefaults]synchronize];

控制台打印出来:

1 -3

当它从默认值加载信息时,其1是好的。 然后我尝试减去1使其为0,但它变为-3。这太令人沮丧了!非常感谢您的帮助!

对于记录

我将代码更改为     减法器++; 它应该打印出1 2

但它打印出1 5。所以它增加了四个。

2 个答案:

答案 0 :(得分:3)

intValue返回一个int,而不是一个指向int的指针。

您必须将减法器声明为int:

 int subtractor = [[[NSUserDefaults standardUserDefaults]objectForKey:@"numberOfAlerts"] intValue];

答案 1 :(得分:2)

Subtractor是一个指向int的指针,代码正在递减指针,而不是int。试试(*subtractor)--