質問編集履歴

2

ジェネリクスの文言を追加

2017/02/16 07:06

投稿

kuma3
kuma3

スコア60

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

具体的に処理したい内容を詳述、実行したいコード例を追加で記述

2017/02/16 07:05

投稿

kuma3
kuma3

スコア60

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,13 @@
2
2
 
3
3
  Swiftのバージョンは3.0です。
4
4
 
5
- 具体的な例としては下記のような状況でプロトコルViewResizableのviewプロパティUIViewに追加でViewShowableプロトコルに適合しているもの表現したいです。
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
- // 下の行はエラーになるが、viewViewShowableプロトコル適合させたい
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