如何为每个iOS开发人员配置不同的配置类?

时间:2014-01-14 03:37:55

标签: ios objective-c

我正在寻找一种好方法让每个开发人员都有一个不同的配置(例如服务器URL,配置标志),它与Objective-C和git配合使用并支持默认配置。一个想法是有两个plist文件:一个检入带有所有默认值的git,另一个未签入并包含自定义覆盖。

比静态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配置是否有推荐的解决方案?

1 个答案:

答案 0 :(得分: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