2016-03-14 55 views
2

我有一个静态函数,我想调用符合协议的类。Swift:符合协议的AnyClass变量

protocol P { 
    static func f(); 
} 

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

是否有存储C.self与符合该协议的类型变量的方法吗?下面无法编译,但它是什么,我非常想要做:

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

为什么不能你只需要使用协议的类型? '让a:P = C.self' – tskulbru

回答

2

类型,你正在试图存储与C.selfC.Type的对象。

类型。如果你想确保它符合P存储你的对象,请使用P.Type作为类型C符合协议P

例子:

let myObject: P.Type = C.self; 
myObject.f();