回答編集履歴
3
概念図の追加
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
循環参照に関する修正
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
説明の書き換え
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
|
|