问题可以像这样简化:我们的库有3个视图控制器 - MainController
,SecondController
,ThirdController
。 MainController
是我们在个人项目中创建实例的内容;它有一个转换为SecondController
的按钮,它有一个转换为ThirdController
的按钮。 ThirdController
有一个连接方法的按钮:
-(void)buttonPressed{
NSLog("Button has been pressed!");
}
我们假设MainController
导入SecondController.h
,SecondController
导入ThirdController.h
。
除了覆盖buttonPressed
之外,我们希望保持库不变,以便它从我们的个人项目中呈现视图控制器,因此我们将ThirdController
作为CustomThirdController
继承并覆盖buttonPressed
做我们想做的事。如果我们现在将MainController.h
导入到我们的项目并创建MainController
的实例,它将不会使用我们的新CustomThirdController
子类。我们如何使用子类而不从库中继承所有3个控制器?
答案 0 :(得分:3)
分叉并更改它,引入委托或添加更多自定义选项。如果你改进它,你可以向作者发送拉请求。
更新
对于猴子修补,如果要替换现有类中的单个方法,请使用类别。
在最糟糕的情况下,你可以采用方法调配。