Budowanie kompatybilnej wstecznej aplikacji OS X, gdy obecny jest nowy interfejs API?

Próbuję zaktualizować aplikację (Clarke) aby zapewnić kompatybilność 10.6.

Mój plan polega na użyciu dwóch różnych ścieżek kodu w zależności od używanej wersji OSX.

W wersji 10.5 użyje jednego kontrolera, który składa się z całkowicie niestandardowego kodu, który nie zależy od żadnego konkretnego API Cocoa. W wersji 10.6 użyje innego kontrolera, który opakuje nowy interfejs API CoreLocation w identyczny interfejs, oparty na tej samej klasie abstrakcyjnej. W czasie wykonywania aplikacja przełącza się między kontrolerami, wykrywając wersję systemu operacyjnego.

Działa to dobrze w przypadku wersji 10.6 dla pakietu SDK 10.6, ale ta sama kompilacja wysadza w dniu 10.5 za pomocą:

10/09/2009 18:30:50 [0x0-0x12f12f].uk.co.tomtaylor.Clarke[4575] dyld: unknown required load command 0x80000022 
10/09/2009 18:30:51 com.apple.launchd[403] ([0x0-0x12f12f].uk.co.tomtaylor.Clarke[4575]) Exited abnormally: Trace/BPT trap 

Jeśli zbuduję dla SDK 10.5, to oczywiście nie może skompilować rzeczy CoreLocation.

Miałem nadzieję, że uda mi się udostępnić pojedynczy plik binarny dla tej aplikacji. Czy istnieje sposób na „ukrycie” interfejsu API CoreLocation z wersji 10.5?

questionAnswers(2)

yourAnswerToTheQuestion