2016-12-24 7 views
2

私はviewWillAppearのaddObserverを呼び出し、viewWillDisappearのremoveObserverを呼び出します。 は正常に動作するようにはと思われます。しかし、Xcodeのクラッシュログでは、removeObserver(昨日クラッシュ21 ...)を呼び出すと、一部の顧客がクラッシュするという報告を受けています。私は顧客がクラッシュしたと報告していないので、これはであり、それは比較的にです。viewWillAppear/viewWillDisappearのaddObserver/removeObserver

@ try/@ catchブロックでremoveObserverコールをカプセル化する提案を読んでいますが、私はremoveObserverが失敗している理由について興味があります。私はそれが(何らかの形で)通知が加えられなかったからだと思います。 (他の理由はありますか?私はiOSの初心者で、ログをクラッシュするのは初めてです...)

FWIW、私は1つのviewWillAppearからaddObserverを呼び出し、1つのviewWillDisappearで削除します。私は問題を複製して、viewWillAppearを呼び出さずにviewWillDisappearへの呼び出しを(NSLogメッセージで)見たことがないようにしました。

ありがとうございます!

答えて

0

viewWillAppearでaddObserverを呼び出すと、viewWillDisappearでremoveObserverを呼び出すことによってバランスが取られます。

viewWillAppearに複数のオブザーバを追加して、viewWillDisappear内のすべてのオブザーバを削除していますか?個々のオブザーバーを名前で削除するのが最善です。システムが通知センターを使用する場合もあります。

0

オブザーバーをviewDidDissapearedに削除してください。 View Controllerのライフサイクルに問題がある可能性があります。

関連する問題