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

回答編集履歴

1

データ監視の終了について追記

2018/09/13 14:36

投稿

kakajika
kakajika

スコア3133

answer CHANGED
@@ -6,8 +6,11 @@
6
6
 
7
7
  - Timerを使って自分で監視する必要はないので、observeを一度だけ呼ぶ
8
8
  - データ更新のたびにhogearrayに全要素を追加していく処理はやめる
9
+ - データの監視を終えるときにremoveObserverWithHandleを呼ぶ
9
10
 
10
11
  ```swift
12
+ private var observer: UInt = 0
13
+
11
14
  // 修正例
12
15
  override func viewDidLoad() {
13
16
  super.viewDidLoad()
@@ -15,7 +18,7 @@
15
18
  DBRef = Database.database().reference()
16
19
 
17
20
  let defaultPlace = DBRef.child("table/orderorder")
18
- defaultPlace.observe(.value, with: { snapshot in
21
+ self.observer = defaultPlace.observe(.value, with: { snapshot in
19
22
  var array: [String] = []
20
23
  for item in (snapshot.children) {
21
24
  let snapshot = item as! DataSnapshot
@@ -32,4 +35,10 @@
32
35
  }
33
36
  })
34
37
  }
38
+
39
+ // データ監視の終了の例(タイミングは適当です)
40
+ override func viewDidUnload() {
41
+ super.viewDidUnload();
42
+ DBRef.child("table/orderorder").removeObserver(withHandle: self.observer)
43
+ }
35
44
  ```