Money と Dollar の 2 つのクラスがあるとします。Dollar は Money から継承されます。
Money には、クラス拡張で宣言されたプロパティがあります。
#import "Money.h"
@interface Money ()
@property(nonatomic) NSUInteger amount;
@end
@implementation Money
@end
Dollar はこのプロパティを継承しますが、Dollar のメソッドからは見えません。Dollar.m でプロパティを再宣言することで、「修正」できます。
@interface Dollar ()
@property(nonatomic) NSUInteger amount;
@end
@implementation Dollar
}
@end
私はこれが本当に嫌いで、コンパイラが何をしているのかを知っているかどうかさえわかりません:
- プロパティを表示するだけですか?
- 新しいプロパティと新しい iVar を作成し、前のものを「シャドウイング」していますか?
クラスとそのサブクラスの実装を除いて、すべての人からプロパティを非表示にする最良の方法は何ですか?
理想的には、実装の詳細であるため、.h ファイルに amount を表示したくありません。