是否可以在子类中隐藏@property?

时间:2013-03-30 00:35:55

标签: ios objective-c

我的应用子类UICollectionViewFlowLayout并使用 minimumLineSpacing之外的所有属性。为了避免混淆,我希望能够从外部“隐藏”minimumLineSpacing,所以看起来我的子类甚至不支持它。这可能吗?

2 个答案:

答案 0 :(得分:13)

是的,你可以。的种类。您可以使用__attribute__((unavailable))标记它,如果您使用它将导致编译器抛出错误。但是,如果您的对象被强制转换为其超类类型,则仍然可以访问该属性,因为这只是一个编译时的事情。

@interface MyClass : UICollectionViewFlowLayout
@property (nonatomic) CGFloat minimumLineSpacing __attribute__((unavailable));
@end

答案 1 :(得分:1)

我认为你实际上不能隐藏它。如果这很重要的话,你当然可以覆盖吸气剂和设定器,并防止实际值发生变化。但它们将永远存在并且可见。