答案 0 :(得分:3)
如果您想要篡改OS /私有SDK提供的类,整个姿势/混合方法非常有用 - 但您通常不应该这样做,并且使用它不是一个好主意作为您自己代码中的标准方法。
场景:在运行时定义控制器类
通常使用抽象超类/接口/ @protocol来定义潜在控制器需要实现的接口,然后在运行时将它们切换进来。
在你的情况下,似乎你有一个控制器充当真正控制器的proxy。你在技术上也不需要@protocol,因为UITableViewController
实际上是你的抽象超类,但你的代理最好是UITableViewController
并拥有视图,而你的其他控制器也是是NSObject
个子类,只是符合UITableView DataSource/Delegate
协议。
答案 1 :(得分:1)
你应该研究Method Swizzling。它可以帮助您在运行时更改功能/功能体。
有一个很棒的tutorial here.