Swift時代はARC前提だしSwiftから始めた人に循環参照でメモリリークする件を伝えるのはどこから話せばいいか難しい。なので動くデモコードとして循環参照するパターンとしないパターンを作ればいいかなと思ったのでGitHubにpushしています。
動作説明
- 画面は一覧と詳細画面に分かれている
- 詳細画面でTimer用のインスタンスを作りそいつがクロージャ利用
- 詳細画面のViewControllerをクロージャに渡す
- 詳細画面から一覧画面に戻った時に循環参照していなければdeinitされる
- deinitが実行されてるかどうかはNSLog使ってるのでXcodeのコンソール見て確認
一覧画面で循環参照すしないコードとするコードが選べる
詳細画面はこんな感じ
備考
Timerを使っているのはクロージャを保持して動作を実行してくれるのが分かりやすいため。
参考
Swiftのクロージャにおける循環参照問題でunownedとweakの使い分けがわからない
http://qiita.com/susieyy/items/39efd4d34cf4c1f9d3ef