Избягвайте добавянето на NSWindowWillEnterFullScreenNotification във версия на OS преди Lion (на Leopard или Snow Leopard)

Как мога да избегна добавянето на NSWindowWillEnterFullScreenNotification във версия на ОС преди 10.7, тъй като е достъпна само в OS 10.7 или по-нова и искам да използвам това известие в по-горе 10.7, но приложението ми се срина, ако го стартирам на по-стара версия на ОС. Проверих регистъра на сривовете и той казваше, че символът не е намерен 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];
    }

Но приложението се срина в предишна версия веднага щом се стартира.

Ето регистъра на сривовете, въпреки че промених името на приложението на XYZ в регистъра поради 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

person prakhar    schedule 07.11.2012    source източник
comment
Къде се срива? Какво има в дневника?   -  person Georg Schölly    schedule 07.11.2012


Отговори (1)


Ето какво мисля, че се случва. Сривът вече се случва в линкера, тъй като той очаква NSWindowDidExitFullScreenNotification да съществува, но не е в по-стари версии на os x.

Нямам никакъв опит в това. Решенията изглеждат някак хакерски.

Погледнете този въпрос, където някой има почти същия въпрос:
Как да изградя обратно съвместимо OS X приложение, когато има нов API?

person Georg Schölly    schedule 07.11.2012
comment
Вече задавам целта за внедряване на 10.4 и базовия sdk на 10.8, както е предложено в приетия отговор в връзката по-горе. - person prakhar; 07.11.2012
comment
Scholly Можем ли да зададем рамката на AppKit като слаба/незадължителна рамка, както е предложено в друг отговор в тази връзка, тъй като NSWindowWillEnterFullScreenNotification се намира в тази рамка? Тъй като съм нов в OSx и нямам достатъчно познания за това - person prakhar; 07.11.2012
comment
@prakhar: Опитахте ли просто да зададете целта за внедряване на 10,5? Това би трябвало (според някои гугли) да доведе до слаба връзка към по-новите API. - person Georg Schölly; 07.11.2012
comment
Scholly, не, не съм пробвал това точно сега, целта ми за внедряване е 10.4, а базовият SDK е 10.8. Искате ли да кажете, че концепцията за слабата връзка е започнала от 10.5 или трябва да е приложима и в 10.4 - person prakhar; 08.11.2012
comment
Scholly Благодаря, човече, работи за мен, зададох AppKit Framework като незадължителен и ето, че работи напълно добре. Още веднъж благодаря много. - person prakhar; 26.11.2012