我發現將.h中的常量定義爲外部屬性,然後在.m文件中指定常量,令人沮喪。似乎如此多餘。是否有任何理由不在頭文件中定義常量?.h中的靜態常量定義與.m中的外部常量的比較
典型的實現將是:
// Constants.h
@interface Constants : NSObject
extern NSString *const kPCFavorites;
@end
的實施將隨後是:
// Constants.m
@implementation Constants
NSString *const kPCFavorites = @"PCFavorites";
@end
不過,我可以做到這一點:
// Constants.h
static NSString *const kPCFavorites = @"PCFavorites";
@interface Constants : NSObject
@end
顯然,這最後的定義沒有按甚至不需要接口或實現,因此兩者都可以被忽略併成爲:
// Constants.h
static NSString *const kPCFavorites = @"PCFavorites";
根本沒有.m文件。
這對我來說似乎更清潔。爲什麼我們不以這種方式實現常量?我已經定義了它們兩種方式,並且在XCode 5中沒有編譯或運行時錯誤。