2013-06-29 69 views
2

在我見過的一些蘋果文檔中,他們建議使用宏來檢查可以在整個項目中使用的iOS當前版本。它看起來像這樣:在iOS應用程序中放置全局宏/函數的位置

NSUInteger MajorVersionInstalled(); 
NSUInteger MajorVersionInstalled() { 
    // Call objective-c methods and return NSUInteger 
} 

#define IS_OLDER_THAN_SIX (MajorVersionInstalled() < 6) 

而且這個想法是,您可以在整個項目的條件檢查中使用宏。我想使用這個想法,但我有點困惑,因爲它使用交流功能,我不知道在哪裏定義它:

  • 是否有一個地方我應該用來定義這個在我的項目中使用(Prefix.pch ??)。
  • 函數的實現是否在同一個地方?

回答

5

是否有一個地方我應該用它來定義這個用於我的項目(Prefix.pch ??)。

PCH不是一個好地方。最好把一個單獨的頭文件和你需要的頭文件放在一起,因爲這個聲明很可能不需要在任何地方都可見。注意:使用NSUInteger的含義也是該函數僅在objc源中可用。

函數實現是否在同一個地方?

除非你有一個非常具體的需要,報關:

NSUInteger MajorVersionInstalled(); 

屬於一個頭文件和定義:

NSUInteger MajorVersionInstalled() { 
    // Call objective-c methods and return NSUInteger 
} 

屬於在*.m文件。

一旦你這樣做,你也可以創建一個函數來擺脫#define IS_OLDER_THAN_SIX (MajorVersionInstalled() < 6)

使用pch,頭文件中的定義和基礎處處都會經常減慢構建,並可能創建更大的二進制文件。很難在小型項目中檢測到這一點,但很快會成爲大型代碼和庫中的問題。

相關問題