Проблема может быть упрощена следующим образом: в нашей библиотеке есть 3 контроллера вида - MainController
, SecondController
, ThirdController
. MainController
- это то, что мы создаем в нашем личном проекте; он имеет кнопку, которая переходит на SecondController
, у которой есть кнопка, которая переходит на ThirdController
. ThirdController
есть кнопка, которая подключается к способу:Настройка или подклассы библиотеки CocoaPod
-(void)buttonPressed{
NSLog("Button has been pressed!");
}
Давайте предположим, что MainController
импорта SecondController.h
и SecondController
импорта ThirdController.h
.
Мы хотим сохранить библиотеку неизменной для подмены buttonPressed
так, что она представляет собой контроллер представления от нашего личного проекта, за исключением, поэтому мы создаем подкласс ThirdController
, как CustomThirdController
и переопределить buttonPressed
делать то, что мы хотим. Если мы сейчас импортируем MainController.h
в наш проект и создадим экземпляр MainController
, он не будет использовать наш новый подкласс CustomThirdController
. Как мы используем наш подкласс без подклассификации всех 3 контроллеров из нашей библиотеки?
Спасибо, но я не пытаюсь улучшить библиотеку, просто сделайте так, чтобы она была настроена для моего проекта. Я обновил свой вопрос, чтобы иметь смысл. –
Если вы хотите патч обезьяны, вы можете использовать категорию вместо подкласса. В этом случае классы остаются нетронутыми, за исключением того, что вы заменяете существующий метод класса своим. – Andy
Спасибо, человек, отлично работает! –