2014-12-01 35 views
1

問題可以這樣簡化:我們的庫有3個視圖控制器 - MainController,SecondController,ThirdControllerMainController是我們在我們的個人項目中創建的一個實例;它有一個轉換到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

分叉它並改變它,介紹委託或添加更多的自定義選項。如果你改進它,你可以發送一個拉請求給作者。

更新:

對於猴子打補丁,使用類別的情況下,如果要替換現有類的單一方法。

在最糟糕的情況下,你可以訴諸方法調合。

+0

謝謝,但我沒有試圖改善圖書館,只是讓它爲我的項目定製。我已經更新了我的問題,以便更有意義。 – 2014-12-01 22:38:53

+0

如果你想要猴子補丁,你可以使用類別而不是子類。在這種情況下,除了用自己的類替換現有的類的方法之外,類還保持不變。 – Andy 2014-12-01 22:41:53

+1

謝謝你,完美的作品! – 2014-12-01 22:52:06