In the superclass MyClass:
@interface MyClass : NSObject
@property (nonatomic, strong, readonly) NSString *pString;
@end
@implementation MyClass
@synthesize pString = _pString;
@end
In the subclass MySubclass
@interface MySubclass : MyClass
@end
@implementation MySubclass
- (id)init {
if (self = [super init]) {
_pString = @"Some string";
}
return self;
}
The problem is that the compiler doesn’t think that _pString is a member of MySubclass, but I have no problem accessing it in MyClass.
What am I missing?
The instance variable
_pStringproduced by@synthesizeis private toMyClass. You need to make it protected in order forMySubclassto be able to access it.Add an ivar declaration for
_pStringin the@protectedsection ofMyClass, like this:Now synthesize the accessors as usual, and your variable will become accessible to your subclass.