我正在尝试class使用泛型动态创建基于实例的类型,但是在类自省时遇到了困难。
class
这里是问题:
self.class
AnyClass
NSClassFromString
T
typeof(T)
那么,对于一个,雨燕等同的[NSString class]IS .self(见元类型的文档,但他们非常薄)。
[NSString class]
.self
实际上,NSString.class它甚至都不起作用!您必须使用NSString.self。
NSString.class
NSString.self
let s = NSString.self var str = s() str = "asdf"
同样,我尝试了快速班…
class MyClass { } let MyClassRef = MyClass.self // ERROR :( let my_obj = MyClassRef()
嗯…错误说:
游乐场执行失败:错误::16:1:错误:使用元类型值构造类类型为“ X”的对象需要使用“ @required”初始化程序 Y().me() ^ <REPL>:3:7: note: selected implicit initializer with type '()' class X { ^
游乐场执行失败:错误::16:1:错误:使用元类型值构造类类型为“ X”的对象需要使用“ @required”初始化程序
Y().me() ^ <REPL>:3:7: note: selected implicit initializer with type '()' class X { ^
我花了一段时间才弄清楚这意味着什么……事实证明它希望全班有一个 @required init()
@required init()
class X { func me() { println("asdf") } required init () { } } let Y = X.self // prints "asdf" Y().me()
一些文档将其称为.Type,但是MyClass.Type在操场上给了我一个错误。
.Type
MyClass.Type