LoginSignup
3
2

More than 5 years have passed since last update.

【iOS】弱参照(weak)ってなんぞや!?

Last updated at Posted at 2015-06-19

弱参照(weak)がよく分からなかったので調べました。

 弱参照(weak)を理解するためには、それなりにいくらか知識が必要で、他の記事にはたくさんの説明があってなにがなんだか分からなくない。おそらくみなさんもそうだったはず。
 なので、すごく簡単にまとめます。

weak(弱参照)とは

 Swiftでは、コンバイル時に参照カウントの増減を自動でやってくれて(ARC)、処理の記述漏れによるメモリリークをほとんどのケースで気にせずにコーディングできる。
 この参照カウントの増減を自動でやってくれる参照が 強参照(strong) で、デフォルトではクラスのインスタンスは強参照になる。
 しかし、関連のある複数のクラスのインスタンス同士をお互いに強参照で保持すると、 循環参照 となりメモリリークする場合があるため、循環参照をさけるために使う1つの方法が弱参照(weak)。(もう1つの方法はアンオウンド参照(unowned)だがここでは説明しない。)
 

例:

外部のオブジェクトを保持して、外部のオブジェクトに対して通知を行うdelegateに関しては、循環参照がおきてしまいメモリリークする場合があるから 弱参照(weak) で保持する必要がある。

さいごに

弱参照(weak)を理解するために、知っておきたいワードをいくつかあげます。(以下ワードを理解できれば、この記事を理解できるはずです)

· 参照渡し
· ガーベージコレクション
· メモリリーク
· 参照カウンター
· ARC(Automatic Reference Counting)
· 循環参照

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2