为什么我的objective-C子类继承了它的父级属性?

时间:2011-09-30 19:19:49

标签: objective-c

在我的父类(WebServiceMessage)的.h和.m文件中,我有以下几行:

@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 个答案:

答案 0 :(得分:2)

根据错误,您似乎省略了一个重要细节:foo不是实例方法,它是一个类方法(即+ (void)foo而不是- (void)foo })。您只能在实例上设置属性(或一般的实例变量)。

答案 1 :(得分:1)

有些东西缺少你没有显示的代码,下面的编译很好:

@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中没有return语句。