質問: 今回の質問は、`[weak self]`を付けていない場合に、付けていないにも関わらず、クロージャ内に記載した`self`は解放されており、コールバックなどで`self`が参照された時点では、使用していたメモリ空間が別のものとして使用され、アプリ自体が落ちる場合があるか?(もしくは不正なメモリをアクセスしてしまうというところまではいかず、単純にnil参照で落ちるだけでしょうか?)という質問となります。
回答: ***`[weak self]`を付けていない場合に、付けていないにも関わらず、クロージャ内に記載したselfは解放されており、コールバックなどでselfが参照された時点では、使用していたメモリ空間が別のものとして使用され、アプリ自体が落ちる場合があるか?*** ありません。 `[weak self]`を付けない場合、`self`はクロージャーに強参照で保持されています。クロージャー自身が生きている限り、`self`の参照先が解放されてしまい、他の用途に使われることはありません。 ***もしくは不正なメモリをアクセスしてしまうというところまではいかず、単純にnil参照で落ちるだけでしょうか?*** 上記したように、`[weak self]`を付けない場合、`self`の参照先がクロージャーの実行中に解放されることはないので、「nil参照で落ちる」こともあり得ません。 (ちなみに`[weak self]`を使用すれば、参照先が解放された場合には`self`は`nil`になりますから、不用意に「別のものとして使用され」ていることはないはずです。この場合変なことをすれば、nil落ちするのはもちろんです。`[unowned self]`だと「プログラマの自己責任」でそんなことは絶対に無いように気をつけて使わないといけません。自分自身で意味が完全に理解できていない限り`[unowned self]`は使わないほうがいいですね。) クロージャーがらみで何か不審な挙動でも見つけられたのでしょうか?もう少し具体的な事例を挙げてもらえれば、何か付け足すことがあるかもしれません。