アプリの作業中に興味深い問題に遭遇しました。シーンを想像してみてください
- 1 つのオブジェクトが存在します。それを A と呼びましょう。
- A、次に、委任ベースのクラス、たとえば NSURLConnection のオブジェクト (B) を作成します。
- A が B のデリゲートとして割り当てられた場合、A は必要なすべてのデリゲート メソッドを実装している必要があります。
- A は B に処理の開始を要求します。この例では、サーバーからデータを取得しています。
- B がデータのフェッチを完了するとすぐに、A の指定されたメソッドを呼び出します。
最後のステップで、A のメソッドを呼び出しているときに、B が A オブジェクトがもう存在しないことに気付いたとします。するとどうなる???
よくわかりませんが、クラッシュの原因になりますか?
はいの場合、状況を回避する方法を教えてください。
私の場合、viewcontroller を何らかのオブジェクトのデリゲートとして割り当てました。たとえば、viewDidLoad
メソッド内の X です。Xがviewcontrollerで定義されたデリゲートメソッドを呼び出す前に、viewcontrollerが破棄される場合があります。
- X のデリゲートを nil に割り当てると問題が解決する場合。じゃあどこにしようかな。
要するに、どのメソッドがビュー コントローラのアンロード フェーズ中に 1 回だけ呼び出さ
viewDidLoad
れ、ロード フェーズでも同じように呼び出されます。