2017-01-24 3 views
2

애플의 문서 말 :NSApplication sharedApplication mainMenu가 nil을 반환하는 이유는 무엇입니까?

메뉴 표시 줄에서 응용 프로그램의 모든 메뉴가 시작할 때 응용 프로그램에 의해 만들어지는 하나 개의 NSMenu 인스턴스가 소유하고 있습니다. NSApplication 메서드 mainMenu를 사용하여이 기본 메뉴를 검색 할 수 있습니다.

- (void)applicationDidFinishLaunching:(NSNotification *)notification{ 
    NSMenu *mainMenu=[[NSApplication sharedApplication] mainMenu]; 
} 

이유 mainMenu 전무는 : 나는 다음과 같은 한

앱의 메뉴를 얻기 위해 내 대리인 클래스에? 내가 잘못된 시간에 그것을 부르겠습니까? [[NSApplication sharedApplication] mainMenu]을보기 컨트롤러의 loadView에 넣으면 nil도 반환됩니다.

응용 프로그램 메뉴 모음에 항목을 추가하고 싶습니다.

+1

이 디버깅을 시도한 적이 있습니까? 새 프로젝트를 만들고 코드를 작성해 보았습니까? 그것은보기 컨트롤러에서 작동합니다 (applicationDidFinishLoading을 테스트하지 않았지만 작동해야합니다.) – HAS

+1

@HAS 맞아요, 새 Cocoa 응용 프로그램 프로젝트에서 작동합니다. 내 프로젝트를 새 프로젝트로 옮겼습니다. – user2070775

+0

도움이되었습니다.) 시간이 있고 문제를 찾으면 자신의 질문에 답하십시오 (그리고 bugreport.apple.com에서 버그 리포트를 제출하십시오). 감사! – HAS

답변

1

연관된 스토리 보드에 응용 프로그램 장면/메뉴 막대가 없으므로이 코드는 nil을 반환합니다.

xcode를 사용하여 새로운 코코아 애플리케이션 프로젝트를 생성하면이 모든 작업이 완료되며 파일을 포팅해야합니다. 위의 코드는 NSMenu를 예상대로 반환합니다.