2012-07-18 4 views
0

그래서 정수를 설정하는 메서드가 있습니다 : -(void)setcurrentviewfromint:(int)currentint{ 이것은 클래스가 MyView입니다. 내 viewDidLoad 방법에서, 나는 그것을 호출하고도 1로 설정 :정수 할 수 없다 == 비교

-(void)setcurrentviewfromint:(int)currentint{ 
    currentview = currentint; 
    NSLog("currentviewis:%d",currentview); 
    [self setNeedsDisplay]; 
} 

- (void)drawRect:(CGRect)rect { 
    NSLog(@"drawRectCalled"); 
    if (currentview == 1) { 
     NSLog(@"do something here"); 
     } 
    } 

} 
: currentview

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    MyView *myview = [[MyView alloc]init]; 
    [myview setcurrentviewfromint:1]; 
} 

그럼 내 헤더 파일에 생성 MyView.m에서, int 타입이다, 나는이 수업을

2012-07-18 18:02:44.211 animation[76135:f803] currentviewis:1 
2012-07-18 18:02:44.223 animation[76135:f803] drawRectCalled 

을 그러나 "여기에 무언가를"인쇄되지 않습니다

는하지만 디버거 출력합니다. currentview이 1과 같지 않은 이유는 무엇입니까?

+1

"그러나 컴파일러 인쇄를"사용하십시오 될 것으로 기대한다. .. 컴파일러에서 오는 것이 확실합니까? –

+0

멀티 스레딩 문제가 있습니까? 'currentView'의 값을 어디에서 설정하고 있습니까? –

+0

"currentviewis : 1"메시지가 표시되지 않습니다. (즉, 먼저 인쇄 된 "1"메시지는 setcurrentviewfromint :에서 인쇄 한 것과 일치하지 않습니다.)'viewDidLoad'가 실제로 호출 되었습니까? – Turix

답변

2

첫 번째 질문에 관하여. currentview는 어떤 데이터 유형입니까? 둘째, setcurrentviewfromint :에서 NSLog가 호출되지 않습니다. 호출 된 경우, "currentviewis : 1"을 참조하십시오. 그래서 올바르게 연결되어 있는지 확인하십시오.

그리고 나는 낙타의 경우라고 말해야합니다! 메소드 이름은 모두 소문자이며 읽기가 어렵습니다. :)

+0

+1 낙타 케이스. OP의 레퍼런스에서, 낙타 케이싱은 변수와 메소드 이름이 소문자로 시작해야 함을 의미하며, 모든 후속 단어의 첫 글자는 대문자이어야합니다. 예 :'myShinyVariable' 그 thatOtherVariableHere'' thisCoolMethodIJustWrote'. – WendiKidd

+0

그래, 내 잘못이야. 내 코드에서, 나는 그것을 바 꾸었습니다. 내 컴파일러 출력 정확히 일치하지 않는, 내가 명확하게하려면 질문에 추가 할 때 내 코드를 변경했기 때문에. 하지만 난 디버거 코드에 엉망이 됐어. –

+0

감사합니다. 문제는 변수처럼 할당하고 있었다는 것입니다. 내가 뭘해야했는지 iboutlet을 추가하고, @class MyView –

0

당신이 설정하고있는 MYView가 currentView에서 읽지 않은 것이 문제입니다.

viewDidLoad에서 로컬 변수 myView를 만든 다음 현재 뷰를 설정하면 아무 것도 가리 키지 않아이 myView가 메모리 누수가됩니다.

MyView가 viewDidLoad 클래스이고 currentview가 해당 클래스의 int 속성이라고 가정합니다 (왜 메소드가 setcurrentview가 아닌가?). 나는 코드가

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self setcurrentviewfromint:1]; 
} 

더 같은

는 따라서 자체

에서 현재보기를 설정하고 다른 상태로 낙타 표기법의 목적 C 표준

+0

그것의 뷰는 내 ViewController.h에로드되지 않았다. camelcase 문제로 유감스럽게 생각합니다. 나는 자신을 가르쳤고, 왜 또는 언제 어떻게 사용해야 하는지를 알거나 이해하지 못했습니다. 하지만 그건 내가 배워야 할 것입니다 –

+0

@EliHulse 어디 MyView에 대한 포인터가 저장되어 있습니까? nib 다음에 다른 것을 할당하면 안된다 – Mark

+0

MyView는 UIView의 하위 클래스이며 내 ViewController.xib에있는 뷰의 사용자 정의 클래스입니다. –

관련 문제