Почему мой дочерний класс объективного C не наследует свойство своего родителя? - PullRequest
0 голосов
/ 30 сентября 2011

В файлах .h и .m моего родительского класса (WebServiceMessage) у меня есть следующие строки:

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

Мой дочерний класс имеет следующее определение:

@interface RegistrationMessage : WebServiceMessage{...}

-(bar)foo;

Таким образом, теоретически дочерний класс должен иметь возможность использовать полученныйData без необходимости объявлять его сам - он должен наследовать существование этой переменной от своего родителя.

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

Я проверил, и я использую #import для родительского класса в файлах .h и .m, просто чтобы быть уверенным, но ошибка все еще появляется.

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

Судя по ошибке, вы пропускаете важную деталь: foo не метод экземпляра, это метод класса (то есть + (void)foo, а не - (void)foo).Вы можете устанавливать свойства (или переменные экземпляра в целом) только для экземпляров.

1 голос
/ 30 сентября 2011

Что-то не хватает в коде, который вы не показывали, ниже компилируется нормально:

@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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...