2012-02-27 61 views
1

因爲我正在學習OS X開發,在這裏我遇到了奇怪的情況,我需要找到一種方法來構建10.6以上的目標應用程序,如果它是10.7,那麼我需要致電一些新添加的方法或枚舉。可能是沒有這樣的方式,但想到問它。Mac OS X版本特定的API使用

我想必須有方法通過宏或類似的東西來使用它。我不想創建特定於操作系統的版本。任何幫助將不勝感激。可能是沒有這樣的方式,但想到問它。

問候, 中號P.

回答

0

您可以從屬性文件讀取的版本:

/System/Library/CoreServices/SystemVersion.plist 

通過這種方式,可以通過#ifdefine

建立一個沒有不同版本的動態代碼編輯:@MP好了,我明白你不想生成特定於版本的代碼。 如果你準備好了,那麼這很容易。只需使用:

#include <Availability.h> 
    #ifdef __MAC_10_7 
     /* 10.7 only code */ 
    #else 
     /* not 10.7 code */ 
    #endif 
+0

感謝您的回覆。所以,你的意思是在#ifdefine的幫助下,我可以使用10.7特定的枚舉和方法,然後將它編譯爲10.6以上的目標?任何#ifdefine的例子都會有幫助。 – 2012-02-28 01:13:36

+0

感謝它通過調整一點點。 – 2012-02-29 03:56:55

+0

實際上,您無法保證能夠可靠地使用__MAC_10_7宏用於此目的。雖然10.7之前的當前SDK不定義此常數,但最新版本的10.4 SDK也定義了__MAC_10_5。 – Tobias 2012-05-22 16:59:12

1

一種方法是用NSFoundationVersionNumber10_*比較NSFoundationVersionNumber - 看到Foundation/NSObjCRuntime.h的可用版本。您可以嘗試-[NSObject respondsToSelector:]

+0

感謝您指出它,但我也必須利用10.7枚舉,所以我想我將不得不使用#ifdefine,然後添加那些使用這些枚舉的方法。如果使用define,我不會生成編譯時錯誤。 – 2012-02-28 01:18:37

+0

@MP如果您將'SDKROOT'設置爲10.7,那麼您可以使用這些標頭和枚舉來構建可見。 – justin 2012-02-28 03:12:35