2016-07-06 1 views
4

を実装するクラスを指定し、例えば、両方のプロトコルに準拠したタイプを指定することも可能です。2つのプロトコル<code>P1</code>と<code>P2</code>がある特定のプロトコル

typealias P = protocol<P1, P2> 

は、タイプを指定するための同様の方法はありますこれはクラスの一種であり、プロトコルにも準拠しています。このような何か(動作しない):

typealias P = UIView: P1 
+2

[このスレッドを読む](http://stackoverflow.com/questions/26401778/in-swift-how-can-i) -declare-a-specific-of-a-specific-type-that-c​​onforms-to-one-o)を使用します。それは最初にスウィフト1時代に掲載されました。この問題は今後のスウィフト3時代にも残っています。スウィフトはまだそのようなタイプを表現する能力を持っていません。 – OOPer

+0

Swiftによって作られたポイントは、あなたのアーキテクチャをうまく設計するならば、それをする必要はないということです。 – Sulthan

+0

@OOPerありがとう、私が達成しようとしていたものと非常に似ている例です。 – MeXx

答えて

0

は、残念ながらそれはスウィフト2.2にIMPOSIBLEだとスウィフト3.0で追加されることはありません。 Typeクラスを継承し、プロトコルを実装するタイプのルールを作成するという考え方。

Image

だから、それはあなたがそのような階層構造を持つことになりますし、あなたがこのクラスのいずれかを保存するプロパティを持つことは非常に一般的ではありません。 また、POPパラダイムでは、UIViewから必要なプロパティを与える追加のプロトコルが必要です。 enter image description here

はその後、追加のクラスを作成します:


はたぶん、あなたは、このようなユースケースを持っている enter image description here

そして、あなたのタイプはP1Base


P.S.になりますそのため、Obj-cで@property (nonatomic) UIViewController<UITableViewDelegate> *protocolClassProperty;を作成すると、SwiftのUIViewController!としてブリッジされます

関連する問題