平々凡々エンジニア

平凡で難しい悩みを解決

循環参照とは

経緯

僕はswiftのクロージャーを安易に使って循環参照を行ってしまいました。 その時にこの言葉を知らなかったため検索できずハマってしまったので記録しておきます。

循環参照とは

メソッドAはメソッドBを呼び出します。 メソッドBはメソッドAを呼び出します。 そしてこれが無限に続くことになります。 この参照が回ってしまうことを循環参照というわけですね。

循環参照が起きてしまうパターン

何が問題なのか?

  • エラーを吐かないことでしょう
  • 無限に回ってしまうので無限にメモリを消費してしまう
  • システムが止まらない

解決策

  • そもそもクロージャーなどのイベントフックを多用しない
  • オブジェクトごとにちゃんと分けてスパゲッティーにしない
  • 静的解析ツールを使用する

雑談

単語は結構検索するけどイマイチ定着しないことがおおいいです。 今回のように循環参照という言葉は言われればなんとなく意味がわかるけど 普段使ってない言葉なのですぐに言葉が思い出せない。 なので今度から単語もブログに書いていこうと思う。