Ios5 有没有办法烘干我的Objective-C iOS ViewController?

Ios5 有没有办法烘干我的Objective-C iOS ViewController?,ios5,xcode4,objective-c-2.0,Ios5,Xcode4,Objective C 2.0,我有一组控制器,其中大多数都有类似的功能 例如: 控制器A具有方法1和方法2 控制器B具有方法2和方法3 控制器C具有方法1和方法3 子类化在这里不是一个真正的选项,因为我特别不希望控制器B有方法1 协议也不是很理想;他们仍然要求我在每个控制器中定义重复的方法 是否无法在一个地方定义一个方法,并在目标C中需要时将此功能混合到类中?一种可能性是根本不使用类。因为我猜这些方法需要访问一些控制器的字段,所以可以使用一个函数,该函数接收指向UIViewController的指针作为参数,并从函数内部

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

例如:

  • 控制器A具有方法1和方法2
  • 控制器B具有方法2和方法3
  • 控制器C具有方法1和方法3
子类化在这里不是一个真正的选项,因为我特别不希望控制器B有方法1

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


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

一种可能性是根本不使用类。因为我猜这些方法需要访问一些控制器的字段,所以可以使用一个函数,该函数接收指向
UIViewController
的指针作为参数,并从函数内部访问其字段
如果根据您使用的是
ControllerA
ControllerB
ControllerC
,每个方法的行为方式应该略有不同,那么您可以使用
isKindOfClass
方法。例如:

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

使用积木

你是如何得到ControllerA子类M1和M2的?目标C不支持多重继承。你想在那种情况下工作吗?@Jim实际上我犯了一个很大的错误。你完全正确,Objective-C不支持多重继承。我编辑了我的答案。我想我今天真的很累,没关系。我经常这样做,担心一些巨魔会立即否决投票。我支持你:)我很好奇。你能解释一下,如果控制器B有一个与方法1具有相同签名的方法,这将是一个问题吗?谢谢你的提示。。。哪里是定义可从多个文件访问的块的最佳位置?只在
blocks.m
文件中导入
blocks.h
到需要它的类中?