うっかりやらかしそうなので、私のための備忘録としてまとめ。
Swift
で Timer
を使用した際の注意点についてです。
今回参考にさせていただいた記事はこちらから。
【Swift】メモリー対策!使ったタイマーは必ずinvalidate() – Qiita
https://qiita.com/shu26/items/8911d6c2b7a73e6142c1
昨日の記事で紹介した Timer
の使い方は、オブジェクトを保持しなかったため、破棄する必要はありませんでしたが、場合によってはオブジェクトとして保持して使うこともあるかと思います。
その際は、必ず Timer
オブジェクトを破棄する必要があります。
サンプルコードは下記のとおりです。
var timer: Timer? override func viewDidLoad() { super.viewDidLoad() timer = Timer.scheduledTimer(timeInterval: 30, target: self, selector: #selector(timerUpdate), userInfo: nil, repeats: false) } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) // タイマーを破棄する if let workingTimer = timer { workingTimer.invalidate() } }
変数 timer に Timer
オブジェクトを保持しています。
なので、使い終わったタイミングで、invalidate()
を実行して Timer
を破棄しなければなりません。
大抵、破棄の処理は viewWillDisappear()
で宣言し、ページを離れる直前で実行すればOKだと思います。
以上、Swift
で Timer
を使用する際の注意点でした。
メモリー対策のためにも、Timer
を使った後は必ず破棄しましょう。
ご参考になれば幸いです。