2014-01-14 70 views
0

我正在尋找一種讓每個開發人員擁有與Objective-C和git一起使用的不同配置(例如服務器URL,配置標誌)並支持默認配置的好方法。一個想法是有兩個plist文件:一個用git檢查所有的默認值,一個沒有檢入幷包含自定義覆蓋。如何爲每個iOS開發人員創建不同的配置類?

比靜態plist更具靈活性,所以我開始考慮有條件加載的類。像:

+ (NSDictionary *)config 
{ 
    NSMutableDictionary *defaults = ...; 
    # if DeveloperConfig.h+m exist 
     // DeveloperConfig can run arbitrary code to override fields 
     [defaults addEntriesFromDictionary: [DeveloperConfig config]]; 
    # endif 
    return defaults; 
} 

是否有這種per-dev配置的推薦解決方案?

回答

0

我會這樣做,MyConfigManager不依賴於任何東西。 +[load]用於註冊將在啓動時由運行時調用的配置。

@implementation MyConfigManager 

static NSMutableDictionary *defaults; 

+ (NSMutableDictionary *)mutableDefaults 
{ 
    static dispatch_once_t pred; 
    dispatch_once(&pred, ^{ 
     defaults = [[NSMutableDictionary alloc] init]; 
    }); 
    return defaults; 
} 

+ (void)addDefaults:(NSDictionary *)dict 
{ 
    [[self mutableDefautls] addEntriesFromDictionary:dict]; 
} 

+ (NSDictionary *)config 
{ 
    return [self mutableDefaults]; 
} 

@end 

@implementation DeveloperConfig 

+ (void)load 
{ 
    [MyConfigManager addDefaults:@{@"key":@"value"}]; 
} 

@end 

你甚至不需要一個新的類,因爲load被每類

@interface MyConfigManager (DeveloperConfig) 
@end 
@implementation MyConfigManager (DeveloperConfig) 
+ (void)load 
{ 
    [self addDefaults:@{@"key":@"value"}]; 
} 
@end 
相關問題