이 문제는 내 생산성을 죽이는 것이므로 누군가가 나를 도울 수 있기를 바랍니다. Mac 개발에 익숙하지 않은 경우에도 일주일에 한 번.Carbon Objective C++ 앱에서 Cocoa 델리게이트 사용
저는 기능을 추가하고자하는 Carbon 어플리케이션이 있습니다 : 파인더에서 더블 클릭 한 파일의 경로를 가져옵니다.
나는
- 가 목표 C 호출을 허용하는 프로젝트를 수정했습니다.
- 위임 객체를 설정하고 위임 객체에
- (BOOL)application:(NSApplication *)app openFile:(NSString *)filename
을 구현했습니다.
문제 : 파인더에서 파일을 두 번 클릭하면 대리인 메서드가 실행되지 않습니다.
나는 누군가가 힌트가있는 경우
내가 그것을 듣고 기뻐할 것입니다 뭔가 (메모리/범위 문제 지금 RunApplicationEventLoop를 사용하고 계십니까? 이벤트 루프 문제를() 실종 확신합니다.
는 여러분 모두 감사합니다
답장을 보내 주셔서 감사합니다. 이벤트 핸들러는 실제로 첫 번째 방법 이었지만 앱이 아직 설치되지 않은 경우에는 작동하지 않습니다. 응용 프로그램이 이미로드 된 경우 완벽하게 작동합니다. 다음 줄을 사용했습니다. AEInstallEventHandler (kCoreEventClass 'odoc' \t \t \t \t \t \t \t \t \t AEEventHandlerUPP (HandleOpenDocuments) 0L 거짓); 아직 뭔가가 누락 되었습니까? – user585299
핸들러를 어디에 설치합니까? 당신이 그것을 잡기 전에 끝날지도 모릅니다. Apple의 서비스 개시 문서에 따르면 이전에 응용 프로그램이 열리지 않은 경우 계속 이벤트를 받아야한다고합니다 (http://developer.apple.com/library/mac/#documentation/Carbon/Conceptual/LaunchServicesConcepts/LSCConcepts/LSCConcepts.html%23 // apple_ref/doc/uid/TP30000999-CH202-TP9 중간보다 조금 작음). – ughoavgfhw
main 함수의 첫 번째 줄에 처리기를 설치합니다. 문제가 해결되었습니다. RunApplicationEventLoop을 호출하기 전에 내가 사용하고 있던 SDK 중 하나가 디버그 대화 상자를 띄웠다. 대화 상자가 나타나지 않는 릴리스에서는 문제가 발생하지 않습니다. 이 대화 상자를 표시하는 데 사용 된 메커니즘이 실제로 응용 프로그램이로드되지 않은 경우 작동하지 않는 이유를 설명하는 odoc 이벤트를 "먹는"것으로 가정합니다. 도움 주셔서 감사합니다. – user585299