在下面的示例中,classInstance
和structInstance
均为nil
。为什么要这样?
let reflector = Reflector()
let classInstance = reflector.get(thing: MyClass.self)
let structInstance = reflector.get(thing: MyStruct.self)
class MyClass {}
struct MyStruct {}
class Reflector {
let mc: MyClass
let ms: MyStruct
init() {
mc = MyClass()
ms = MyStruct()
}
func get<T>(thing: T) -> T? {
let mirror = Mirror(reflecting: self)
for (_, child) in mirror.children.enumerated() {
if let t = child.value as? T {
return t
}
}
return nil
}
}