我有一组控制器,其中大多数具有相似的功能。
例如:
- 控制器 A 有方法 1 和方法 2。
- 控制器 B 有方法 2 和方法 3。
- 控制器 C 有方法 1 和方法 3。
子类化在这里并不是一个真正的选择,因为我特别不希望控制器 B 具有方法 1。
协议也不是很理想。他们仍然要求我在每个控制器中定义我的方法的副本。
有没有办法在一个地方定义一个方法,并在Objective C需要时将此功能混合到类中?
我有一组控制器,其中大多数具有相似的功能。
例如:
子类化在这里并不是一个真正的选择,因为我特别不希望控制器 B 具有方法 1。
协议也不是很理想。他们仍然要求我在每个控制器中定义我的方法的副本。
有没有办法在一个地方定义一个方法,并在Objective C需要时将此功能混合到类中?
一种可能性是根本不使用类。由于我猜这些方法需要访问控制器的某些字段,因此您可以使用一个函数,该函数接收一个指向 a 的指针作为参数,UIViewController
并从函数内部访问其字段。
如果每种方法的行为方式略有不同,具体取决于您使用的是ControllerA
、ControllerB
还是ControllerC
,那么您可以使用isKindOfClass
method. 例如:
void method1(UIViewController* controller) {
if( [(id) controller isKindOfClass:[ControllerA class]] ) {
//do something
}
}