我有两个类继承自同一个类。每个类都有一个与该类同名的对应 JSON 文件。为了避免每次创建实例时都加载 JSON,我添加了一个类方法和静态变量:
static NSArray *map = nil;
+(NSArray *)map {
if (!map) {
map = [NSJSONSerialization JSONObjectWithData:
[NSData dataWithContentsOfFile:
[[NSBundle mainBundle] pathForResource:NSStringFromClass([self class])
ofType:@"json"]]
options:0
error:nil];
}
return map;
}
我将此方法(字面意思是复制和粘贴)添加到两个子类中。
我想把它移到超类,但是如果我这样做了,那么静态变量将在两个子类的实例之间共享,并且只有与首先创建实例的类对应的 JSON 映射将被加载,所有后续另一个类的实例将返回错误的地图。
那么如何才能为每个子类只加载一次对应的 JSON 文件,并且每个子类都有自己的映射呢?(理想情况下无需像我一样复制和粘贴代码)