Подтвердить что ты не робот

В Objective-C, почему это приращение на 4 вместо 1?

В Objective-C у меня есть простой блок кода, который увеличивает счетчик каждый раз при нажатии кнопки. Мои журналы и даже обновления интерфейса отображаются с шагом 4 вместо одного. Это просто проблема с отображением моего форматирования (я использую% 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
4b9b3361

Ответ 1

Код, который вы показываете, не должен делать этого. Я сделал быструю программу для двойной проверки, и я получаю ожидаемые результаты:

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

Моя лучшая догадка заключается в том, что вы затеняли counterValue другой переменной типа int *, которая делает приращение + на sizeof(int) вместо 1.