2009-12-31 4 views
0

이 스크린 샷은 모두를 설명한다 : alt textUIButton 값을 조사 할 때 XCode 디버거 출력이 예상 한 것과 일치하지 않는 이유는 무엇입니까?

스크린 샷은 2로 buttonType보고 디버거를 표시하지만 콘솔 나타낸 버튼형 = 0 동일한 변수 디버거 콘솔에 도시되고있다. 어떻게이 불일치가 일어나는가?

(gdb) po ((UIButton *)control).buttonType 

buttonType이라는 멤버가 없습니다.

로 요청 :

NSLog(@"################ CALL OUT ACCESSORY TAPPED: set pinColor to RED in call out accessory tapped"); 
    NSLog(@"################ CALL OUT ACCESSORY TAPPED: UIButtonTypeDetailDisclosure = %d",UIButtonTypeDetailDisclosure); 
    NSLog(@"################ CALL OUT ACCESSORY TAPPED: control button type = %d", ((UIButton *)control).buttonType); 

    if (((UIButton *)control).buttonType == 2) { 
     NSLog(@" ############# CALL OUT ACCESSORY TAPPED: in buttonType = disclosure"); 
     leftCallOutButton.available = YES; 
    } 

명령문이 false로 평가되는 경우! buttonType가보고되는 경우 이유를 이해하려고 노력하는 2 (사실은 제 2 형으로 생성되는 경우) 마이크에 의해 요청으로

:

(gdb) p (int) [((UIButton *)control) buttonType] 
$1 = 0 
2009-12-31 14:04:26.821 iParkNow![4432:207] ################ CALL OUT ACCESSORY TAPPED: control button type = 0 
(gdb) p (int) [((UIButton *)control) buttonType] 

좋아, 그래서이 더 의미가 있습니다. 문제는 buttonType이 2에서 0으로 변경되는 이유입니다. 그 buttonType 2로 만든 어떻게 든 0으로 변경 가져옵니다. 어떤 아이디어 ??

+0

@ennuikiller : 두 줄을 포함하여 "control button type = 0"을 출력하는 NSLog() 호출을 통해 "UIButtonTypeDetailDisclosure = 2"를 출력하는 NSLog() 호출에서 코드를 제공 할 수 있습니까? 그것은 조금 도움이 될 것입니다. –

+0

@ John 귀하의 요청에 따라 게시. – ennuikiller

+0

@ennuikiller : 수정 된 명령을 실행 해 보셨습니까? 결과를 게시 할 수 있습니까? – Mike

답변

2

_buttonFlags는 private 인스턴스 struct입니다. 그것에 대해 걱정할 필요가 없습니다. 예상대로 작동하도록 "보장"되는 유일한 것은 공용 API입니다. 구현 세부 사항은 변경 될 수 있습니다.

귀하의 경우 (사이드 참고로, 변수가 개인 인스턴스 변수 일반적으로 _로 시작), p (int) [((UIButton *)control) buttonType]을 시도합니다.

설정 한 중단 점에서 원하는 것을 기록하기 위해 중단 점 작업을 만드는 것도 고려해 볼 수 있습니다. 자세한 내용은 http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/XcodeDebugging/200-Managing_Program_Execution/program_execution.html을 참조하십시오.

+0

괜찮 으면, 디버거의 buttonType 값을 어떻게 확인합니까? – ennuikiller

+0

@ 마이크, 내 질문에 인쇄물의 결과를 부탁드립니다. 해당 변수를 해결할 수 없습니다. – ennuikiller

관련 문제