2014-12-01 2 views
1

Проблема может быть упрощена следующим образом: в нашей библиотеке есть 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 контроллеров из нашей библиотеки?

ответ

3

Заполните его и внесите изменения, представите делегата или добавьте дополнительные параметры для настройки. Если вы его улучшите, вы можете отправить запрос на возврат обратно автору.

Update:

Для обезьяны заплат, использование категории в случае, если вы хотите заменить один метод в существующем классе.

В худшем случае вы можете прибегнуть к методу swizzling.

+0

Спасибо, но я не пытаюсь улучшить библиотеку, просто сделайте так, чтобы она была настроена для моего проекта. Я обновил свой вопрос, чтобы иметь смысл. –

+0

Если вы хотите патч обезьяны, вы можете использовать категорию вместо подкласса. В этом случае классы остаются нетронутыми, за исключением того, что вы заменяете существующий метод класса своим. – Andy

+1

Спасибо, человек, отлично работает! –

Смежные вопросы