我有一个带有 Class
对象和 NSString
键的全局字典。我的 Property
类的每个自定义子类都可以使用
Property
父类(super class)上注册自己
+ (void)registerPropertyClass:(Class)pclass forNamePrefix:(NSString *)namePrefix
属性
使用名称
和值
进行初始化。我现在想做的是根据 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(因此没有保留/释放)
最佳答案
如果不编译它,它会起作用,但在手动保留释放下会泄漏。在重新分配 self = [instance init];
之前,您需要release
self
。
有了 ARC,应该没问题。
关于objective-c - 在init方法中确定类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8125405/