2016-03-14 77 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();