1

10.7 より前の OS バージョンで NSWindowWillEnterFullScreenNotification を追加しないようにするにはどうすればよいですか。これは OS 10.7 以降でのみ使用可能であり、10.7 以降でこの通知を使用したいのですが、以前の OS バージョンで実行するとアプリケーションがクラッシュしました。クラッシュ ログを確認したところ、Symbol not found NSWindowWillEnterFullScreenNotification と表示されていました

現在、これを使用してOSのバージョンを確認しています

   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];
    }

しかし、アプリは起動するとすぐに以前のバージョンでクラッシュしました。

NDAのためにログでアプリ名をXYZに変更しましたが、クラッシュログは次のとおりです

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
4

1 に答える 1

1

これが私が思うことです。リンカは存在すると予想されるため、クラッシュはすでにリンカで発生していNSWindowDidExitFullScreenNotificationますが、os x の古いバージョンでは発生していません。

私はこれについて経験がありません。解決策は一種のハックのようです。

誰かがほぼ同じ質問をしているこの質問を見てください:
新しいAPIが存在する場合、下位互換性のあるOS Xアプリを構築する方法は?

于 2012-11-07T12:48:33.047 に答える