开发者

Why isn't my objective-C child class inheriting the property of it's parent?

开发者 https://www.devze.com 2023-04-10 09:23 出处:网络
In the .h and .m files of my parent class (WebServiceMessage) I have the following lines: @pr开发者_如何学JAVAoperty(nonatomic, retain) NSMutableData *receivedData;

In the .h and .m files of my parent class (WebServiceMessage) I have the following lines:

@pr开发者_如何学JAVAoperty(nonatomic, retain) NSMutableData *receivedData;
@synthesize receivedData;

My child class has the following definition:

@interface RegistrationMessage : WebServiceMessage{...}

-(bar)foo;

So in theory, the child class should be able to use receivedData without needing to declare it itself -- it should inherit the existence of that variable from it's parent.

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

I've checked, and I'm using #import for the parent class in both the .h and the .m files, just to be sure, but the error is still showing up.


Based on the error, it looks like you're omitting an important detail: foo is not an instance method, it's a class method (that is, it's + (void)foo rather than - (void)foo). You can only set properties (or instance variables in general) on instances.


Something is missing the the code that you duid not show, the below compiles fine:

@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

I did have to get rid of the bar return type because it is an unknown type and there was no return statement in method foo.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号