回答編集履歴

3

概念図の追加

2020/02/24 03:00

投稿

TsukubaDepot
TsukubaDepot

スコア5086

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- くとわかりやすいのですが...
13
+ 描いてみたので末尾に載せておきま
14
14
 
15
15
  是非ご自身で一度図示してみることをお勧めします。
16
16
 
@@ -182,4 +182,14 @@
182
182
 
183
183
  ---
184
184
 
185
+ ![`GameViewController`の生成](19032e948d0f6defd5a95c52e52cd55c.png)
186
+
187
+ ![`countDown`の生成](30639bfd8796ca59dc8b535d7f9287a4.png)
188
+
189
+ ![`gameVC`の生成](dd4dcf9569e9f63b45c942cd08a1c1ca.png)
190
+
191
+ ![`updateTimerLabel`の呼び出し](2e69dc6321f75bece1fc7d0727dbd104.png)
192
+
193
+
194
+
185
195
  こんな時間になったのでかなり簡潔に書きましたが、疑問があればコメントしてください。

2

循環参照に関する修正

2020/02/24 03:00

投稿

TsukubaDepot
TsukubaDepot

スコア5086

test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  // ** CountDownDelegate プロトコルを定義
42
42
 
43
- protocol CountDownDelegate {
43
+ protocol CountDownDelegate : class {
44
44
 
45
45
  // *** 別のクラスで具体的に行わせたい処理
46
46
 
@@ -66,7 +66,9 @@
66
66
 
67
67
  // ** delegate先のクラス(この時点では未定なのでオプショナル型で定義)
68
68
 
69
+ // ** 循環参照を防ぐために weak で定義
70
+
69
- var delegate: CountDownDelegate?
71
+ weak var delegate: CountDownDelegate?
70
72
 
71
73
 
72
74
 

1

説明の書き換え

2020/02/23 17:41

投稿

TsukubaDepot
TsukubaDepot

スコア5086

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- なので、`CountDown`クラスの内部で新たに宣言された`gameVC`クラスのプロパティ`timerLabel: UILabel!`は、その実体がないまま(値が`nil`のまま)`timerLabel.text = timerCountString`と値が代入されているため、実行時エラーが出てしまいます。
9
+ なので、`CountDown`クラスの内部で新たに宣言された`gameVC:GameViewController`クラスのプロパティ`timerLabel: UILabel!`は、その実体がないまま(値が`nil`のまま)`timerLabel.text = timerCountString`と値が代入されているため、実行時エラーが出てしまいます。
10
10
 
11
11
 
12
12