0

私は2つのビューコントローラーを持つアプリを持っています..親コントローラーと、スタックにプッシュされた子コントローラーです。

親ビューまたは子ビューの viewDidAppear メソッドが呼び出されるたびに、networkClass のデリゲートが親または子に設定されるようにプログラムをコーディングしました。

したがって、問題は、親クラスがこれらのネットワーク呼び出しの一部を決して行わないため、親クラスでは必要のないいくつかのデリゲート メソッドが子クラスに実装されていることです。ただし、子クラスでネットワーク呼び出しを開始し、完了する前に親クラスに戻ると、親クラスがデリゲートとして設定されます。

しかし、親クラスにはデリゲート メソッドが実装されていないため、クラッシュします。

回避策を知ることはできますか?

4

1 に答える 1

1

オプション 1: child での操作をキャンセルしviewWillDisappearます。

オプション 2:networkClassで、呼び出す前にメソッドが実装されていることを確認します。

オプション 3: (コードの匂い): 親にスタブを実装します。

いずれにせよ、おそらく操作 (Op.1) をキャンセルする必要があります。関数をoptionalプロトコル定義のようにマークした場合は、その存在を確実に確認する必要があります (Op.2)。そうでない場合は、不完全な実装に関するコンパイラの警告を受け取っているはずです。特に実装されていないメソッドに関するコンパイラ エラーを無視しないでください。それらを完全に実装する意味がない場合は、それらをオプションにするかどうかを真剣に検討する必要があります (2)。もちろん、スタブ ( -(void)callback1{}) を実装することもできますが、それが正しい手順になることはめったにありません。

于 2013-06-26T02:26:11.057 に答える