質問編集履歴

1

補足

2020/06/23 12:04

投稿

uhsi
uhsi

スコア57

test CHANGED
File without changes
test CHANGED
@@ -15,3 +15,105 @@
15
15
  ### 問題点
16
16
 
17
17
  overrideが増える、Base.classに空のメソッドを作る必要がある、overrideを必須にすることができない
18
+
19
+
20
+
21
+ ### 実装したいこと
22
+
23
+ ・ベースとなるクラスまたはプロトコルなどが共通のメソッドを持つことができ、そのメソッドからベースクラスが持つ変数を参照することができる
24
+
25
+ ・サブクラスで実装しなければならないメソッドを指定できる
26
+
27
+
28
+
29
+ ### 現在のコード
30
+
31
+
32
+
33
+ ```Swift
34
+
35
+ class Base {
36
+
37
+
38
+
39
+ var isFirstTurn:Bool!
40
+
41
+
42
+
43
+ func setListener(result:(Int) -> Void){}
44
+
45
+
46
+
47
+ func setBordData(){
48
+
49
+ // do something
50
+
51
+ }
52
+
53
+
54
+
55
+ }
56
+
57
+
58
+
59
+ class OnlineGame:Base {
60
+
61
+ override func setListener(result:(Int) -> Void){
62
+
63
+ //... received signal
64
+
65
+ result(signal)
66
+
67
+ }
68
+
69
+ }
70
+
71
+
72
+
73
+ class COMGame:Base {
74
+
75
+ override func setListener(result:(Int) -> Void){
76
+
77
+ //... received signal
78
+
79
+ result(comMove)
80
+
81
+ }
82
+
83
+
84
+
85
+ func comMove() -> Int {
86
+
87
+ return //... think next move
88
+
89
+ }
90
+
91
+ }
92
+
93
+
94
+
95
+ class GameView :UIViewController {
96
+
97
+ let helper:Base!
98
+
99
+
100
+
101
+ // in a function
102
+
103
+ print("isFirstTurn:(helper.isFirstTurn)")
104
+
105
+
106
+
107
+ helper.setListener({
108
+
109
+ result in
110
+
111
+ // do something
112
+
113
+ })
114
+
115
+ // in a function
116
+
117
+ }
118
+
119
+ ```