2012-11-07 1 views
1

OS 10.7 이상에서만 사용할 수 있고 10.7 이상에서이 알림을 사용하기 때문에 10.7 이전의 OS 버전에서 NSWindowWillEnterFullScreenNotification을 추가하지 않으려면 어떻게해야합니까? 이전 OS 버전에서 실행하면 응용 프로그램이 손상되었습니다. 나는 충돌 로그를 확인해야하며 기호가 NSWindowWillEnterFullScreenNotificationOS 버전 이전 라이온 (Leopard 또는 Snow Leopard)에서 NSWindowWillEnterFullScreenNotification을 추가하지 마십시오

지금 나는 즉시 얻을으로 이전 버전에서 추락있어이

if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_5) { 
    /* On a 10.5.x or earlier system */ 
} 
else if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_6) { 
    /* On a 10.6 - 10.6.x system */ 
} else { 
[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(willEnterFull:) 
               name:NSWindowWillEnterFullScreenNotification 
               object:nil]; 





    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(didExitFull:) 
               name:NSWindowDidExitFullScreenNotification 
               object:nil]; 
    } 

그러나 응용 프로그램을 사용하여 OS 버전을 확인하고 찾을 수없는 것을 말하고 있었다 시작되었습니다. 내가 인해 NDA

Process:   XYZ [53319] 
Path:   /Applications/XYZ.app/Contents/MacOS/XYZ 
Identifier:  com.XYZ.XYZ 
Version:   2.0.5 (2.0.5) 
Code Type:  X86 (Native) 
Parent Process: launchd [224] 

Date/Time:  2012-10-28 07:44:11.717 -0500 
OS Version:  Mac OS X 10.6.8 (10K549) 
Report Version: 6 

Exception Type: EXC_BREAKPOINT (SIGTRAP) 
Exception Codes: 0x0000000000000002, 0x0000000000000000 
Crashed Thread: 0 

Dyld Error Message: 
    Symbol not found: _NSWindowDidExitFullScreenNotification 
    Referenced from: /Applications/XYZ.app/Contents/MacOS/XYZ 
    Expected in: /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit 
in /Applications/XYZ.app/Contents/MacOS/XYZ 
+0

가 충돌 않습니다

사람이 거의 똑같은 질문을 가지고이 질문에서보세요? 로그에 뭐가 들어 있니? –

답변

1

에 로그에 XYZ에 응용 프로그램 이름을 변경해야하지만 여기

는 여기에 내가 일이 생각 무엇 충돌 로그입니다. 링커에서는 이미 NSWindowDidExitFullScreenNotification이 존재할 것으로 예상되기 때문에 충돌이 발생하지만 이전 버전의 osx에서는 충돌이 발생하지 않습니다.

나는 이것에 대한 경험이 없습니다. 해결책은 일종의 해킹 인 것 같습니다.
How to build a backwards compatible OS X app, when a new API is present?

+0

위의 링크에서 수락 된 대답에서 제안한대로 배포 대상을 이미 10.4로 설정하고 sdk를 10.8로 설정합니다. – prakhar

+0

Scholly NSWindowWillEnterFullScreenNotification이이 프레임 워크에 있기 때문에 AppKit 프레임 워크를 weak/optional 프레임 워크로 설정할 수 있습니까? OSx에 익숙하지 않아 이에 대한 지식이 충분하지 않기 때문에 – prakhar

+0

@prakhar : 배포 대상을 10.5로 설정하려고 했습니까? 이것은 (일부 검색에 따라) 새로운 API를 약하게 링크해야합니다. –