有没有办法干我的Objective-C iOS ViewControllers?

时间:2012-03-06 16:20:43

标签: ios5 xcode4 objective-c-2.0

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

例如:

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

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

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

是否无法在一个地方定义方法并在目标C中需要时将此功能混合到类中?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

根本不可能使用课程。由于我猜这些方法需要访问某些控制器的字段,因此您可以使用一个函数来接收指向UIViewController的指针作为参数,并从函数内部访问其字段。
如果您使用ControllerAControllerBControllerC,则每种方法的行为方式应略有不同,那么您可以使用isKindOfClass方法。例如:

    void method1(UIViewController* controller) {
        if( [(id) controller isKindOfClass:[ControllerA class]] ) {
             //do something
        }
    }