2

私にはコントローラーのグループがあり、そのほとんどが同様の機能を共有しています。

例えば:

  • コントローラAには方法1と方法2があります。
  • コントローラBには方法2と方法3があります。
  • コントローラCには方法1と方法3があります。

ここでは、コントローラーBにメソッド1を持たせたくないので、サブクラス化は実際にはオプションではありません。

プロトコルも実際には理想的ではありません。それでも、各コントローラーでメソッドの複製を定義する必要があります。

Objective Cで必要なときに、メソッドを1つの場所で定義し、この機能をクラスに混在させる方法はありませんか?

4

2 に答える 2

0

クラスをまったく使用しない可能性があります。これらのメソッドはコントローラーのフィールドの一部にアクセスする必要があると思うので、へのポインターをパラメーターとして受け取り、UIViewController関数内からそのフィールドにアクセスする関数を使用できます。、またはを使用
しているかどうかに応じて、各メソッドの動作がわずかに異なる場合は、メソッドを使用できます。例えば:ControllerAControllerBControllerCisKindOfClass

    void method1(UIViewController* controller) {
        if( [(id) controller isKindOfClass:[ControllerA class]] ) {
             //do something
        }
    }
于 2012-03-06T17:09:41.607 に答える