В 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
Ответы
Ответ 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.