我正在寻找一种好方法让每个开发人员都有一个不同的配置(例如服务器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配置是否有推荐的解决方案?
答案 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