Swift:符合协议的AnyClass变量

时间:2016-03-14 21:06:11

标签: swift generics swift2

我有一个静态函数,我想调用符合协议的类。

protocol P {
    static func f();
}

class C: P {
    static func f() {}
}

有没有办法将C.self存储为具有符合协议类型的变量?下面没有编译,但这是我理想的尝试:

let a: AnyClass<P> = C.self;
a.f();

1 个答案:

答案 0 :(得分:3)

您尝试使用C.self存储的对象类型为C.Type

类型C符合协议P

如果您希望通过确保对象符合P来存储对象,请使用P.Type作为类型。

示例:

let myObject: P.Type = C.self;
myObject.f();
相关问题