質問するログイン新規登録

質問編集履歴

1

補足

2020/06/23 12:04

投稿

uhsi
uhsi

スコア57

title CHANGED
File without changes
body CHANGED
@@ -6,4 +6,55 @@
6
6
  Base.classを作りA.class,B.classはBaseを継承し、変更が必要なメソッドをoverrideする
7
7
 
8
8
  ### 問題点
9
- overrideが増える、Base.classに空のメソッドを作る必要がある、overrideを必須にすることができない
9
+ overrideが増える、Base.classに空のメソッドを作る必要がある、overrideを必須にすることができない
10
+
11
+ ### 実装したいこと
12
+ ・ベースとなるクラスまたはプロトコルなどが共通のメソッドを持つことができ、そのメソッドからベースクラスが持つ変数を参照することができる
13
+ ・サブクラスで実装しなければならないメソッドを指定できる
14
+
15
+ ### 現在のコード
16
+
17
+ ```Swift
18
+ class Base {
19
+
20
+ var isFirstTurn:Bool!
21
+
22
+ func setListener(result:(Int) -> Void){}
23
+
24
+ func setBordData(){
25
+ // do something
26
+ }
27
+
28
+ }
29
+
30
+ class OnlineGame:Base {
31
+ override func setListener(result:(Int) -> Void){
32
+ //... received signal
33
+ result(signal)
34
+ }
35
+ }
36
+
37
+ class COMGame:Base {
38
+ override func setListener(result:(Int) -> Void){
39
+ //... received signal
40
+ result(comMove)
41
+ }
42
+
43
+ func comMove() -> Int {
44
+ return //... think next move
45
+ }
46
+ }
47
+
48
+ class GameView :UIViewController {
49
+ let helper:Base!
50
+
51
+ // in a function
52
+ print("isFirstTurn:(helper.isFirstTurn)")
53
+
54
+ helper.setListener({
55
+ result in
56
+ // do something
57
+ })
58
+ // in a function
59
+ }
60
+ ```