ビュー コントローラの 1 つで強い参照に問題があり、メモリ リークが発生しています。まず、私のセットアップ:
2 つのビュー コントローラー (v1 および v2)。v1 は v2 にセグエし、v2 には v1 に戻る閉じるボタンがあります。v2 には、接続が確立されるまで無限に再接続を試みるコードが含まれています。(red5pro を使用したビデオ ストリーミング)。コードは次のとおりです。
func reconnect(){
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(5.0 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { () -> Void in
self.connectToStream()
}
}
私の状況では継続的な再接続が望ましいですが、ユーザーが v2 を終了すると、再接続を停止したいと考えています。しかし現在、ユーザーが v2 を離れた場合でも、再接続は無限に続きます。
これは、v2 には強力な参照があり、ユーザーが終了した後も存続し続けるためであることがわかりました。したがって、これにより、reconnect() メソッドを無限に呼び出しているコードが引き続き実行されます。すべてを弱い参照に変換するために v2 をクリーンアップしようとしていますが、いくつかの代替案も検討しており、それに関していくつか質問がありました。
viewDidDisappear などで再接続を強制終了する方法はありますか? ビュー コントローラーが破棄されなくても、少なくとも再接続プロセスは停止しますか?
v2 を終了して v1 に戻った後、ユーザーが再び v2 に移行した場合、毎回 v2 の新しいインスタンスを作成するのではなく、v2 の同じインスタンスを割り当てることは可能ですか?