2016-07-06 122 views
4

由於有2個協議P1P2,可以指定符合兩國的協議類型,如:指定一個實現協議的類

typealias P = protocol<P1, P2> 

是否有指定類型相似的方式這是一種類,也符合協議,例如像這樣(這是行不通的):

typealias P = UIView: P1 
+2

請閱讀[This thread](http://stackoverflow.com/questions/26401778/in-swift-how-can-i -declare-A-可變-A-特定型的是,符合對一鄰的)。它在Swift 1時代首次發佈,即將到來的Swift 3時代仍然存在這個問題。 Swift仍然沒有能力表達這樣的類型。 – OOPer

+0

斯威夫特的觀點是,如果你設計的很好,你不需要那樣做。 – Sulthan

+0

@OOPer謝謝,這個例子與我試圖實現的非常相似。 – MeXx

回答

0

不幸的是它在Swift 2.2中是不可能的,並且不會在Swift 3.0中添加。 想要爲繼承某些類並實現協議的類型創建Type規則。

Image

所以它不是很常見,你會有這樣的層次結構,並要保存這個班的人會擁有財產。 同樣在POP範例中,您應該有額外的協議,可以爲您提供UIView所需的屬性。


也許你有這樣的用例: enter image description here

然後創建其他類: enter image description here

而且你喜歡的類型將是P1Base


附:這就是爲什麼如果您在Obj-c中創建@property (nonatomic) UIViewController<UITableViewDelegate> *protocolClassProperty;,它將被橋接爲斯威夫特中的UIViewController!