2012-07-19 147 views
0

時,我想做到以下幾點:避免警告做類extention

@interface UINavigationController() 

-(void)removeFromNavigationStack:(Class)aClass; 

@end 

和.m文件

@implementation UINavigationController 

-(void)removeFromNavigationStack:(Class)aClass { 

} 

但在.m文件有很多,如「法的警告'initWithRootViewController:'not found「的定義」

我該如何避免這種情況?我試過包括但仍然有警告

謝謝

回答

4

由於您正在處理UINavigationController,一個UIKit類,您可能需要使用類別。擴展需要在類的實現主要@implementation塊中定義的,你沒有訪問,對於UINavigationController

docs

類的外延都喜歡匿名類,除了它們聲明的方法必須在相應類的主@implementation塊中實現。使用Clang/LLVM 2.0編譯器,您還可以在類擴展中聲明屬性和實例變量。

+3

請注意,通常不鼓勵通過類別向現有類添加功能。它將您的代碼與'套件代碼以難以保持一段時間的方式交錯。如果您要通過類別添加方法,請確保將其前綴以避免碰撞;即'tahirRemoveFromNavigationStack:'。這也可以很容易地發現增加的功能。 – bbum 2012-07-19 16:33:40

1

在您的.m文件中添加您的類擴展名。

+0

那麼如何將擴展名包含在其他.m文件中呢?因爲不會有.h – tahir 2012-07-19 14:38:27

+0

你爲什麼想這樣做?也許你需要一個類別而不是類擴展。 「 – iSofTom 2012-07-19 14:40:36

+0

」將您的類擴展添加到.m文件中。「它不是* his *'.m'文件,其中預期的擴展名屬於:) – dasblinkenlight 2012-07-19 15:08:17