正如標題所說 - 在Java中,我只是讓類定義常量,然後將它們導入將使用它們的類中。它在Objective-C中以相同的方式完成嗎?共享常量定義變量的標準是什麼
爲了明確這一點,我想
#define variable 1
#define variable 2.0
而且在不同的類中使用相同的常量。
正如標題所說 - 在Java中,我只是讓類定義常量,然後將它們導入將使用它們的類中。它在Objective-C中以相同的方式完成嗎?共享常量定義變量的標準是什麼
爲了明確這一點,我想
#define variable 1
#define variable 2.0
而且在不同的類中使用相同的常量。
將宏放入頭文件中,並在需要訪問頭文件時使用#include
或#import
頭文件。
ok SharedMacros.h :) – 2013-02-22 23:49:37
還有另一種使用宏的替代方法。你可以將它們定義爲全局變量。
在Constants.h:
extern int variableX;
extern float variableY;
在Constants.m(尤其在進口之前,任何其他代碼):
int variableX = 1;
float variableY = 2.0f;
有這種方法在宏的幾個優點:
您的示例使用C預處理器宏。這與Objective-C的工作方式相同,都與支持C風格預處理器宏的其他任何環境一樣:將它們粘貼到共享標題中,並將其粘貼到#import
或#include
之間。
雖然這很完美,但您特別提到了與類相關的常量和Objective-C。在Objective-C,你會經常看到不斷NSString的(例如,用於通知名或字典鍵)屬於這樣定義一個特定的類和類似的常量:
在頭(.h):
extern NSString * const LibraryEntryDidUpdateNotification;
extern const NSUInteger LibraryEntryDefaultStarRating;
@interface LibraryEntry : NSObject
...
在實施(.M):
NSString * const LibraryEntryDidUpdateNotification = @"LibraryEntryDidUpdateNotification";
const NSUInteger LibraryEntryDefaultStarRating = 3;
@implementation LibraryEntry
...
這是蘋果公司是如何做的在他們的現代化框架,以及它是如何被許多第三方開發者來完成。在我看來,重構比預處理器宏更容易(例如,在Xcode中使用「重構」按鈕重命名類,同樣可以輕鬆處理這些常量),但常量的預處理器宏也具有它們的優點。
第二篇參考文章幫助我確定#define是我的應用程序的方式。謝謝。 – 2013-10-10 14:26:33
術語擡頭:當它們是#defined常量時,它們不是「變量」。 :)與Java不同,當你在C中定義一些東西時,你正在進行實際的文本替換;它不像一個變量不會發生變化(爲了某些目的,C中存在const全局變量)。 – 2013-02-22 23:44:35
@BenZotto如果術語:它們被稱爲宏而不是常量。 – 2013-02-22 23:45:53