クロージャに [weak self] をつけていない場合、予期しないメモリを参照することはありますか?
前置き
swift
でクロージャを書く場合に、[weak self]
を付けていない場合、循環参照が起こりメモリリークしてしまう場合があります。
メモリリークしているのは、解放されていないオブジェクトなので、すぐにself
がどのオブジェクトを参照しているのかソースコード上わかります。
質問
今回の質問は、[weak self]
を付けていない場合に、付けていないにも関わらず、クロージャ内に記載したself
は解放されており、コールバックなどでself
が参照された時点では、使用していたメモリ空間が別のものとして使用され、アプリ自体が落ちる場合があるか?(もしくは不正なメモリをアクセスしてしまうというところまではいかず、単純にnil参照で落ちるだけでしょうか?)という質問となります。