假设我有 2 个类:Money 和 Dollar,其中 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 文件中可见,因为它是一个实现细节。