繁体   English   中英

在Objective-C中,为什么增加4而不是1?

[英]In Objective-C, why does this increment by 4 instead of 1?

在Objective-C中,我有一个简单的代码块,每次按下按钮时都会递增一个计数器。 我的日志,甚至是界面的更新,都显示增量为4而不是1。 这只是我格式化的显示问题(我正在使用%d)或其他我错过的东西? 我的猜测在于“%d”,但我是Objective-C的新手,并不确定。 (注意,我也试过“counter + = 1;”,结果相同。

int counterValue = 0;
NSLog(@"Count at init: %d",counterValue);
...

-(IBAction)pushButton { 
    NSLog(@"Count (Pre-Push) = %d",counterValue);
    counterValue++;
    NSLog(@"Count (Post-Push) = %d",counterValue);
}

输出如下:

2010-02-20 18:39:39.125 My App[37536:207] Count at init:  0
2010-02-20 18:39:39.845 My App[37536:207] Count (Pre-Push) = 0
2010-02-20 18:39:39.846 My App[37536:207] Count (Post-Push) = 4
2010-02-20 18:39:40.165 My App[37536:207] Count (Pre-Push) = 4
2010-02-20 18:39:40.166 My App[37536:207] Count (Post-Push) = 8
2010-02-20 18:39:40.727 My App[37536:207] Count (Pre-Push) = 8
2010-02-20 18:39:40.728 My App[37536:207] Count (Post-Push) = 12

您显示的代码不应该这样做。 我做了快速程序来双重检查,我得到了预期的结果:

2010-02-22 17:04:35.787 app[68267:a0f] Count (Pre-Push) = 0
2010-02-22 17:04:35.790 app[68267:a0f] Count (Post-Push) = 1
2010-02-22 17:04:35.923 app[68267:a0f] Count (Pre-Push) = 1
2010-02-22 17:04:35.924 app[68267:a0f] Count (Post-Push) = 2

我最好的猜测是你用另一个类型为int *变量对counterValue进行了阴影,它使用sizeof(int)而不是1来增加+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM