问题可以这样简化:我们的库有 3 个 View Controller - MainController
, SecondController
, ThirdController
. MainController
是我们在个人项目中创建的实例;它有一个转换为 SecondController
的按钮它有一个转换为 ThirdController
的按钮. ThirdController
有一个连接到方法的按钮:
-(void)buttonPressed{
NSLog("Button has been pressed!");
}
假设
MainController
进口 SecondController.h
, 和 SecondController
进口 ThirdController.h
.除了覆盖
buttonPressed
之外,我们希望保持库不变以便它显示我们个人项目中的 View Controller ,因此我们将 ThirdController
子类化如CustomThirdController
并覆盖 buttonPressed
做我们想做的事。如果我们现在导入 MainController.h
到我们的项目并创建 MainController
的实例,它不会使用我们的新 CustomThirdController
子类。我们如何使用我们的子类而不从我们的库中继承所有 3 个 Controller ?
最佳答案
fork 并更改它,引入委托(delegate)或添加更多自定义选项。如果你改进它,你可以向作者发送一个拉取请求。
更新:
对于猴子补丁,如果要替换现有类中的单个方法,请使用类别。
在最坏的情况下,您可以诉诸方法调配。
关于ios - 自定义或子类化 CocoaPod 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27237270/