0
我有一个全局字典,其中包含Class
对象和NSString
键。我Property
类的每个自定义子类可以使用在init方法中确定类
+ (void)registerPropertyClass:(Class)pclass forNamePrefix:(NSString *)namePrefix
一个Property
与name
和value
初始化的Property
超注册自己。我现在要做的是根据前缀name
(如果注册的类匹配)从init方法返回不同的类。
会是这样的事情是正确的吗?
- (id)initWithName:(NSString *)name value:(NSString *)value
id instance = self;
NSArray *registeredPrefixes = [kCKPropertyClasses allKeys];
for (NSString *prefix in registeredPrefixes) {
if ([name rangeOfString:prefix].location == 0) {
instance = [[kCKPropertyClasses objectForKey:prefix] alloc];
break;
}
}
self = [instance init];
if (self) {
self.name = name;
self.value = value;
}
return self;
}
更新:忘了提,这个项目使用ARC(所以没有保留/释放)
我建议改变循环只获取类,并将'alloc'移动到与'init'相同的语句。将'alloc'和'init'配对在一起总是最好的。而且由于你使用的是ARC,你可能想用'new'替换'alloc'和'init'对。最后,获得'allKeys'不是必需的;你可以直接在字典上迭代,并且它会产生它的键。 –