2010-02-23 3 views
18

Objective-C에서 버튼을 누를 때마다 카운터를 증가시키는 간단한 코드 블록이 있습니다. 내 로그와 인터페이스 업데이트도 1 대신 증분 4를 표시합니다. 이 문제는 필자의 포맷팅 (% d을 사용하고 있습니다) 또는 누락 된 다른 문제로 인한 것입니까? 내 생각 엔 "% d"이 (가) 있지만 Objective-C를 처음 접했고 확실하지 않습니다. . (참고, 나는 또한 시도 "카운터 + = 1;"같은 결과Objective-C에서 왜이 값이 1 대신 4 씩 증가합니까?

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

Nit : '- (IBAction) doWhatever : (id) sender'가되어야합니다.'sender' 인수를 사용하지 않아도됩니다. – Wevah

+5

@Wevah :별로. 하나의 인수 형식이 가장 많이 사용되는 반면, 이러한 모든 방법 서명은 다음과 같은 동작 방법에도 똑같이 적용됩니다 : (1)'- (void) action', (2)'- (void) action : (id) sender', (3)'- (void) action : (id) 보낸 사람 forEvent : (UIEvent *) event'. 출처 : http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIControl_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006779-RH2-SW28 –

+0

아, 네 말이 맞아. . 다른 UIKit/AppKit 차이점입니다. (올바른 modded.;)) 내 .h 파일에 – Wevah

답변

43

코드 당신이 그렇게 안 있는지 보여주는 것을 . 내가 번 확인하는 빠른 프로그램을 만들어, 내가 예상 결과를 얻을 :

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 

내 추측은 당신이 01,232을하고 유형 int *의 또 다른 변수로 counterValue을 그림자 것을입니다이 1 대신에 sizeof(int)만큼 증가합니다.

+0

나는 "int * counterValue;"라고 선언하고 있습니다. 그게 문제 야? – jbnunn

+0

@jnunn, 예. 그것이 당신의 문제입니다. 'int' 형의 변수를 원한다면 포인터를 선언하지 마십시오. –

+0

그걸 고쳤습니다. 정확한 심령 디버깅을 위해 Carl – jbnunn

관련 문제