オブザーバーとしての私が消えるのかどうか観察をやめる必要がある理由は理解できますが、ブロックは私の存在に依存しますが、観察対象の寿命が重要である理由はわかりません。
考えられる説明は次のとおりだと思います。
addObserverForName:object:queue:usingBlock
説明によると:
通知キューとキューに追加するブロック、およびオプションの基準(通知名と送信者)を使用して、受信者のディスパッチテーブルにエントリを追加します。
このコンテキストでの「送信者」は、パラメータの単なる別名object
であり、次の用語で説明されています。
ブロックを操作キューに追加する通知を持つオブジェクト。nilを渡すと、通知センターは通知の送信者を使用して、ブロックを操作キューに追加するかどうかを決定しません。
したがって、object
一種のフィルターとして機能します。通知が着信すると、通知センターはその値(存在する場合)に基づいて、ブロックを指定された操作キューに追加する必要があるかどうかを判断します。
さて、これを考えてみましょう:
オブザーバーが削除されることなく、オブザーブされたオブジェクトの割り当てが解除されます。
通知を投稿することもできる別のオブジェクトが作成され、ポイント1で割り当てが解除されたオブジェクトと同じアドレスが発生します。
これで、オブザーバーは2番目のオブジェクトによって投稿された通知に反応します。
非常にまれなケースであることは認めますが、発生する可能性があるので、それに対してコーディングする方がよいでしょう。