2011-09-08 9 views
3

이것은 매우 간단한 문제이지만 왜 이런 일이 발생하는지 잘 모릅니다. 내 헤더 파일에서 나는 UIButton *leftButton을 선언했다. 의 viewDidLoad 방법에서 나는 내가 가진 다른 방법으로 그런 다음이 leftButton=[UIButton buttonWithType:UIButtonTypeRoundedRect];UIButton이 충돌을 일으킴

을 : 위의 메서드를 호출 할 때

leftButton.frame=newFrame; 
    leftButton.tag=i; 
    [leftButton addTarget:self action:@selector(leftButtonSelected:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:leftButton]; 

그러나 나는 충돌을 점점 계속. 때로는 메시지를 받지만, 메시지가 없으면 충돌합니다. 나는 실제로 모든 충돌 메시지를 복제 할 수 없다. 이제는 일반적인 충돌이지만, [UIGestureRecognizer setFrame]과 같은 이상한 문제로 인해 문제가 발생하거나 [WebView setFrame] 등의 오류가 발생했다. leftButton이 UIButton이 아닌 다른 것을 생각해 봤지만 그렇지 않습니다. 내 프로젝트 전체에 leftButton이라는 이름은 없습니다. 어떤 아이디어?

+0

당신이 정말로 일부 NSLogs에서 명백한 종류의 문제를 배제한 경우를 대비해 - Xcode에서 실제로 혼란스러워하는 곳에서 DerivedData를 삭제합니다. 때로는 Xcode가 내 파일을 다시 컴파일하지 않는다고해도 ... - 방금 깨달은 것입니다 - ARC를 사용하지 않았을 가능성이 큽니다 - 버튼을 잃어버린 메모리 문제 일 수 있습니다. – user387184

답변

7

첫 번째 방법은 자동 렌더링 된 개체를 반환하는 것입니다.이 방법은 두 번째 메서드가 호출 될 때까지 출시되었을 가능성이 큽니다. 첫 번째 메소드에서 버튼을 유지하거나 보유한 속성을 사용하여 ivar 대신에 보유합니다.

또한 마지막에 dealloc 메소드에서 이것을 릴리스해야합니다.

+0

나는 그것을 첫 번째 방법으로 유지합니까? – Snowman

+1

leftButton = [[UIButton buttonWithType : UIButtonTypeRoundedRect] retain]; 전화, 형식화 안함, 미안해! – jrturton

+0

고맙습니다. – Snowman

관련 문제