在 Ojective-C 中我写道:
id <MyProtocol> object = [[NSClassFromString(@"aClassName") alloc] initWithObject:obj];
我想用 Swift 写这个。
有没有做同样的事情,还是我超出了语言范式?
编辑:
这是我的上下文。 我有的地方:
- (instancetype)initWithObject:(NSArray *)array andClassName:(NSString *)className {
self = [self initWithClassName:className];
if(self) {
_members = [[NSMutableArray alloc] init];
for(id obj in array) {
id <MyProtocol> object = [[NSClassFromString(className) alloc] initWithObject:obj];
[_members addObject:object];
};
}
return self;
}
最佳答案
在 Swift 中,您将需要一个泛型类。
你的类将有一个通用类型 <T : MyProtocol>
, members
将是 [T]
类型你可以使用 T
创建新实例。
您不需要传递 className
作为参数。
关于objective-c - 快速使用协议(protocol)和类名初始化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30776775/