2011-11-23 4 views
1

저는 프로젝트에서 작업 중이며 프로그래밍 방식으로 최대한 수행하려고합니다.UIBarButtonItem으로 인해 iPhone 응용 프로그램이 비정상적으로 작동합니다.

App Delegate에서 만든 NavigationController의 탐색 모음에 UIBarButtonItem을 추가해야합니다. 여기에의 구현 파일에 다음

WPViewController *mainVC = [[WPViewController alloc] initWithNibName:@"WPViewController_iPhone" bundle:nil]; 
UINavigationController *navCon = [[UINavigationController alloc] init];   
[navCon pushViewController:mainVC animated:NO]; 
[self.window addSubview:navCon.view];  

내가 만들고 VC의 탐색 항목으로 barbuttonitem를 추가 WPViewController 선언 : 테스트라는 방법이의 전에 선언이

UIBarButtonItem *rBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(test)]; 
self.navigationItem.rightBarButtonItem = rBarButtonItem; 

단순히 로그 "테스트",하지만 버튼을 클릭하면 응용 프로그램이 충돌합니다.

저를 도와주세요.이 버그가 나를 미치게합니다.

주 :

  • 내가 ARC를 사용하고 내 프로젝트는
  • 버튼이 시험 방법에 대한 인수로 자체를 전달하려고
+0

크래시 로그를 작성하십시오. – CodaFi

+0

방금 ​​exc_bad_access 메시지가 나타납니다. – Francesco

+1

환경 변수 NSZombieEnabled를 YES로 설정하고 디버그합니다. – 0x8badf00d

답변

0

은 ARC에서 "할당이 해제 된 인스턴스에 보낸 메시지는"컴파일러가 표시 및 출시했습니다 의미, 메시지 전에 항목을 보낼 수 있습니다 : 그리고 메소드 구현은 같아야합니다.

디버거에서 NSZombieEnabled, MallocStackLogging 및 guard malloc을 설정하십시오. 그런 다음 응용 프로그램이 충돌 할 때, 콘솔이 입력 :

오브젝트 충돌의

(GDB) 정보의 malloc-역사 // 주소 즉, 0x543216 //

addSubview을 사용하고 있지만 속성을 만들 때 나는 또한이 문제를 가지고
+0

ARC가 활성화 된 상태에서'[object release]'가 유효하지 않습니다. @selector (release)를 사용하려고해도 빌드 타임 오류가 발생합니다. –

+0

그렇다면 그는 컴파일러가 자신이 그 객체로 완료했다고 생각하기 때문에 ARC를 꺼야합니다. – CodaFi

-1

전에 비슷한 버그가 없었어요. 선택기에 콜론이 없으므로 해당 메서드의 서명에 인수가 포함되지 않은 것 같습니다 (@selector(test:)이어야 함).

- (void) test:(id)sender 
+0

나는 이미 당신이 말한 것을 시도했으나 그 문제는 여전히 존재합니다. – Francesco

+0

OP의 주석 섹션에서 결과를 읽으면 잘못된 셀렉터가 아니며 할당 취소 된 인스턴스임을 알 수 있습니다. –

+0

맞습니다.이 답변을 올렸을 때 출력에 대한 설명이 없었습니다. 죄송합니다. –

0

(nonatomic, strong) 강한 나를 위해 그것을 해결했습니다.

관련 문제