이렇게하면 MyConfigManager
은 아무런 영향을받지 않습니다. +[load]
은 시작시 런타임에 의해 호출되는 configs를 등록하는 데 사용됩니다. 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
당신도 새로운 클래스를 필요가 없습니다
@interface MyConfigManager (DeveloperConfig)
@end
@implementation MyConfigManager (DeveloperConfig)
+ (void)load
{
[self addDefaults:@{@"key":@"value"}];
}
@end