2013-10-17 18 views
2

在我的項目,我使用的NSObject+Properties.h類別(見aqtoolkit:https://github.com/AlanQuatermain/aqtoolkit/blob/master/Extensions/NSObject%2BProperties.hObjective C:如何繼承在父類中加載的類別方法?

然後我有一個類,我宣佈爲

#import <Foundation/Foundation.h> 
#import "NSObject+Properties.h" 

@interface GFDictionaryInitiable : NSObject 
... 

我那麼有GFDictionaryInitiable幾個子類,如GFRestaurant

#import <Foundation/Foundation.h> 

#import "GFDictionaryInitiable.h" 

@interface GFRestaurant : GFDictionaryInitiable 
... 

我的問題是,我不能訪問我的子類NSObject+Properties類中定義的方法。例如,我得到的錯誤:

-[GFRestaurant hasPropertyNamed:]: unrecognized selector sent to instance 0x2e57240 

我怎麼能有我所有的子類「繼承」了在父類加載的類的方法?

+1

你確定「NSObject + Properties.m」已被添加到你的目標? –

+1

它應該工作。你確定你的.m文件包含在你的目標中嗎?轉到'Build Phases> Compiled Sources'並查看'NSObject + Properties.m'是否存在。 –

回答

4

當你得到一個運行時異常,而不是一個編譯器錯誤,我以爲你忘了 爲「NSObject的+ Properties.m」添加到你的目標。選擇文件並在文件檢查器中檢查 「目標成員」複選框。

0

只需添加:

#import "NSObject+Properties.h" 

你的子類.h文件。

+1

他編譯沒有問題,所以我不相信這會解決他的問題。 –

+0

是的。馬丁的答案可能是正確的 - 但只是爲了防止他誤報編譯器警告。 –