2016-03-17 7 views
1

Можно сделать следующее:Обеспечить конкретный тип для реализации Generic протокола

protocol A: class { 
    typealias T: AnyObject 
} 
extension A { 
    func testA(a:Self, _ t:T)->Void{ 
     print(a, t) 
    } 
} 
class B:A { 
    typealias T = String 
} 

Другими словами, у меня есть протокол и хочу, чтобы обеспечить конкретный тип только в классе, который соответствует его.

ответ

0

Все должно быть хорошо. Единственная проблема с кодом, который у вас есть, заключается в том, что String не является AnyObject.

Вам просто нужно:

protocol A: class { 
    typealias T 
} 
extension A { 
    func testA(a:Self, _ t:T)->Void{ 
     print(a, t) 
    } 
} 
class B:A { 
    typealias T = String 
} 
+0

Спасибо! Виноват –

Смежные вопросы