Objective-Cの通知(Notification)を解除するタイミング

通知を受け取る登録したら、removeObserverで解除するというのは当然なんだけど、そのタイミングをミスっててかなりハマった。
具体的には、通知を登録→ビューを削除→通知を解除→同じビューを作成、するとそのビューが通知を受け取っちゃってる。
その新しいビューも通知登録するから、メソッドが複数回同時に呼ばれた。
んでその中でNSURLクラス使ったんだけど、呼んでないはずのinitFileURLWithPath:メソッドがエラーだとデバッガに出てきた。
原因わかんねぇぇぇぇとなってたところで通知じゃね?と気づいた。

ARCを使っててビューの解放を任せてたのが失敗だった。
removeFromSuperViewメソッドを使った時点でdeallocが呼ばれるものだと思ってたから、そこで通知を解除してた。
でも実際は呼ばれてなかったので、viewWillDisappear:で解除するようにしたらうまくいった。

備忘録です。

関連記事:


コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> <pre class="" title="" data-url=""> <span class="" title="" data-url="">