문제

Apple OS X Cocoa 프레임워크를 사용하여 어떻게 게시물을 게시할 수 있나요? 시트 (슬라이드다운 모달 대화 상자) 다른 프로세스의 창에 있습니까?

편집하다: 조금 더 명확해졌습니다:

내 응용 프로그램은 Subversion 버전 제어를 수행하는 Finder 확장입니다(http://scplugin.tigris.org/).내 애플리케이션의 일부는 플러그인(Finder용 상황별 메뉴 항목)입니다.그러나 내 응용 프로그램의 대부분은 별도의 데몬 프로세스에 있습니다.여러 가지 이유로 우리는 사실상 모든 코드를 데몬에 넣기로 결정했습니다.플러그인은 메뉴 자체와 데몬에 대한 Apple 이벤트만 정의합니다.

때로는 데몬이 사용자에게 추가 정보를 요청해야 하는 경우도 있습니다.이를 위해 화면에 창을 표시할 수 있지만 이는 혼란스럽습니다(임의로 배치됨). 여기서 작업 흐름은 합법적인 모달인 것 같습니다. 예를 들어 "파일을 선택하고 메뉴에서 '커밋'을 선택하고 커밋 주석을 제공합니다. , 수술을 하세요."

프로세스 간 협력(예: 일종의 참조 전달)이 허용됩니다.두 프로세스 모두 내 것이지만 시트의 코드를 기본 프로세스에 바인딩하는 것을 피하고 싶습니다.

도움이 되었습니까?

해결책

실제로 프로세스 간 통신이 뷰 수준에서 발생하도록 하려고 하는 것처럼 들립니다. 이는 실제로 Cocoa가 일반적으로 작동하는 방식이 아닙니다.레이어를 그보다 조금 더 분리하면 작업이 훨씬 쉬워집니다.

시트 코드를 다른 프로세스에 넣고 싶지 않은 이유는 무엇입니까?이는 뷰 코드이며 뷰 코드는 본질적으로 프로세스별로 다릅니다.여기서 해야 할 올바른 일은 아마도 플러그인 코드에 다소 일반적인 모달 시트 지원을 추가하고 해당 코드를 호출하기 위해 데몬이 만들 수 있는 IPC 호출을 추가하는 것입니다.뷰 객체를 원격 프로세스로 전달하려고 시도하는 것은 전혀 작동하지 않는다면 악몽 같은 일이 될 것입니다.

이 접근 방식을 사용하면 프레임워크와 싸우게 됩니다.

다른 팁

다른 프로세스의 창에 대한 액세스 권한은 최대로 제한되어 있으므로 다른 프로세스의 창에 시트를 추가할 수 없습니다.

제발 이러지 마세요.가능하다면 상호 작용을 비모달로 만드십시오.특히 커밋과 같은 작업에서는 커밋 주석을 작성하는 동안 파일을 탐색할 수 있는 것이 훨씬 더 좋습니다.

OS X에는 창 그룹이 있지만 응용 프로그램을 (쉽게) 확장할 수는 없을 것 같습니다.

고려해야 할 또 다른 사항은 OS X에서는 (OS 9와 달리) 동일한 폴더에 많은 Finder 창을 열 수 있다는 것입니다.당신이 했다 Finder 창에 시트를 추가할 수 있는 충분한 권한/API가 있으면 해당 창의 양식으로 인해 사용자가 파일 작업을 계속할 수 없게 되는 것과는 다릅니다.

(오랜 Mac 사용자로서 개인적인 의견으로는 이러한 종류의 상호 작용이 나를 벽에 부딪히게 할 것이라는 것입니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top