objective-c - 快速使用协议(protocol)和类名初始化对象

标签 objective-c swift initialization protocols

在 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/

相关文章:

objective-c - 不理解 block 作用域给出的示例

ios - 将字符串分配给另一个 View Controller 中的文本字段

c - 结构初始化器中的匿名 union

c - 如何在 C 中初始化结构?

objective-c - 如何在 watchOS 2 中获取当前位置?

ios - scaledValueForValue : called on a font that doesn't have a text style set

objective-c - 为什么我的导航栏 Controller 不处理我的导航栏 View 上的 touchesEnded 事件?

c - 在 Swift 中使用 C - strlcpy - 无法转换类型 'UnsafeMutablePointer<_>' 的值

ios - 自定义 UIPickerView

java - 不初始化局部变量并将属性(整数)初始化为 0 背后的逻辑是什么?