Say I have 2 classes: Money and Dollar, where Dollar inherits from Money.
Money has a property declared in a class extension:
#import "Money.h"
@interface Money ()
@property(nonatomic) NSUInteger amount;
@end
@implementation Money
@end
Dollar inherits this property, but it's not visible from methods in Dollar. I can "fix", by redeclaring the property in Dollar.m:
@interface Dollar ()
@property(nonatomic) NSUInteger amount;
@end
@implementation Dollar
}
@end
I really dislike this and I'm not even sure that I know what the compiler is doing:
- Is it just making the property visible?
- Is it creating a new property and new iVar and "shadowing" the previous one?
What's the best way to have a property hidden from everyone except the implementation of the class and its subclasses?
Ideally, I would not like amount to be visible in the .h file, as it's an implementation detail.