【发布时间】:2016-01-14 14:35:33
【问题描述】:
我正在 Swift 中寻找与以下 Obj-C 代码等效的代码:
- newInstanceOf:(id)classRef {
return [classRef new];
}
然后使用它:
id instance = [whatever newInstanceOf:NSArray.class]
[instance isKindOfClass:NSArray.class] == YES
我尝试过使用 Swift 模板:
func newSomething<T>(classRef:T.Type) -> T {
return classRef()
}
我收到错误:error: 'T' cannot be constructed because it has no accessible initializers
【问题讨论】:
-
我试图了解您为什么要这样做。
whatever在[whatever newInstanceOf:NSArray.class]中代表什么,为什么newInstanceOf是实例方法而不是类方法? -
没有什么特别的原因,只是不想写一个使用Obj-C对象的C函数,更把事情搞糊涂了。我想做这个 f.ex。创建一个将类作为参数的通用对象工厂。
-
目前还不清楚您要达到的目标。
[whatever newInstanceOf:NSArray.class]对NSArray()有何改进?为什么工厂方法是实例方法而不是类方法,就像我之前问的那样? -
您可以使用 NSArray.class 作为变量。 f.ex.: [self createInstanceOf:self.classThatWasDefinedAtRuntime] 其中 self.classThatWasDefinedAtRuntime 之前由第 3 方设置
标签: objective-c swift class instance