質問編集履歴
2
ジェネリクスの文言を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
ViewResizableを採用するクラスがプロパティとして持つviewはViewShowableを採用しているクラスです。ViewResizableのviewプロパティでその特定のクラスを指定することもできますが、ViewShowableを採用するクラスは様々なクラスが考えられるためそれでは、特定のクラス毎にプロトコルを宣言しなくてはなりません。
|
8
8
|
|
9
|
-
そのため、プロパティの記述で特定の型のインスタンスでかつプロトコルを採用しているインスタンスを表現することでコードの記述量を減らしたいです。
|
9
|
+
そのため、プロパティの記述(ジェネリクス等何かしらの方法)で特定の型のインスタンスでかつプロトコルを採用しているインスタンスを表現することでコードの記述量を減らしたいです。
|
10
10
|
|
11
11
|
|
12
12
|
|
1
具体的に処理したい内容を詳述、実行したいコード例を追加で記述
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,7 +2,13 @@
|
|
2
2
|
|
3
3
|
Swiftのバージョンは3.0です。
|
4
4
|
|
5
|
-
具体的な例としては下記のような状況でプロトコルViewResizableのviewプロパティ
|
5
|
+
具体的な例としては下記のような状況でプロトコルViewResizableのviewプロパティがUIViewのインスタンスもしくはサブクラスのインスタンスである場合に、ViewShowableで宣言されているメソッドを実装していることを保証したいです。
|
6
|
+
|
7
|
+
ViewResizableを採用するクラスがプロパティとして持つviewはViewShowableを採用しているクラスです。ViewResizableのviewプロパティでその特定のクラスを指定することもできますが、ViewShowableを採用するクラスは様々なクラスが考えられるためそれでは、特定のクラス毎にプロトコルを宣言しなくてはなりません。
|
8
|
+
|
9
|
+
そのため、プロパティの記述で特定の型のインスタンスでかつプロトコルを採用しているインスタンスを表現することでコードの記述量を減らしたいです。
|
10
|
+
|
11
|
+
|
6
12
|
|
7
13
|
```swift
|
8
14
|
|
@@ -18,9 +24,25 @@
|
|
18
24
|
|
19
25
|
protocol ViewResizable {
|
20
26
|
|
21
|
-
// 下の行はエラーになるが、view
|
27
|
+
// 下の行はエラーになるが、viewからViewShowableのメソッドを呼び出したい
|
22
28
|
|
23
29
|
var view: UIView & ViewShowable! { get }
|
30
|
+
|
31
|
+
}
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
extension ViewResizable {
|
36
|
+
|
37
|
+
func resizeAndShow() {
|
38
|
+
|
39
|
+
ビューのフレーム変更コード
|
40
|
+
|
41
|
+
// showメソッドを呼び出したい
|
42
|
+
|
43
|
+
view.show()
|
44
|
+
|
45
|
+
}
|
24
46
|
|
25
47
|
}
|
26
48
|
|