2011-09-30 107 views
0

在我父類(WebServiceMessage)我有以下線的.h和.m文件:爲什麼我的Objective-C子類沒有繼承它父類的屬性?

@property(nonatomic, retain) NSMutableData *receivedData; 
@synthesize receivedData; 

我的子類的定義如下:

@interface RegistrationMessage : WebServiceMessage{...} 

-(bar)foo; 

所以從理論上說,子類應該能夠使用receivedData而不需要聲明它自己 - 它應該繼承父變量的存在。

@implementation RegistrationMessage 
... 
-(bar)foo{ 
    self.receivedData=[NSMutableData data];//Error: Property 'receivedData' not found on object of type 'Class' 
} 

我檢查,我使用#import在.H和.m文件無論是父類,只是要確定,但錯誤依然顯示出來。

回答

2

基於錯誤,它看起來像你忽略一個重要的細節:foo不是一個實例方法,這是一個類方法(也就是它的+ (void)foo而非- (void)foo)。您只能在實例上設置屬性(或通常的實例變量)。

+0

看着我的代碼,你是對的 - 我顛倒了類和實例變量。 – RonLugge

1

有遺漏的代碼,你DUID不顯示,下面的編譯罰款:

@interface WebServiceMessage : NSObject 
@property(nonatomic, retain) NSMutableData *receivedData; 
@end 

@implementation WebServiceMessage 
@synthesize receivedData; 
@end 

@interface RegistrationMessage : WebServiceMessage 
-(void)foo; 
@end 

@implementation RegistrationMessage 
-(void)foo { 
    self.receivedData = [NSMutableData data]; 
} 
@end 

我也已經擺脫了bar返回類型,因爲它是一個未知的類型,也沒有回報foo方法中的語句。