2

我有一组控制器,其中大多数具有相似的功能。

例如:

  • 控制器 A 有方法 1 和方法 2。
  • 控制器 B 有方法 2 和方法 3。
  • 控制器 C 有方法 1 和方法 3。

子类化在这里并不是一个真正的选择,因为我特别不希望控制器 B 具有方法 1。

协议也不是很理想。他们仍然要求我在每个控制器中定义我的方法的副本。

有没有办法在一个地方定义一个方法,并在Objective C需要时将此功能混合到类中?

4

2 回答 2

0

一种可能性是根本不使用类。由于我猜这些方法需要访问控制器的某些字段,因此您可以使用一个函数,该函数接收一个指向 a 的指针作为参数,UIViewController并从函数内部访问其字段。
如果每种方法的行为方式略有不同,具体取决于您使用的是ControllerAControllerB还是ControllerC,那么您可以使用isKindOfClassmethod. 例如:

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