gpt4 book ai didi

objective-c - 在init方法中确定类

转载 作者:行者123 更新时间:2023-12-03 18:00:04 24 4
gpt4 key购买 nike

我有一个带有 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com