我发现很难相信一个类没有一种直接的方法可以在 .m 文件中声明其受保护的属性(以避免使用只有子类需要知道的变量污染 .h 文件)..
用代码表示,我想完成这样的事情:
// SuperClass.h
NOTHING!
// SuperClass.m
@interface SuperClass
@property (nonatomic, retain) variable;
@end
// SubClass.m
// do something with variable
更新:这种情况发生在 UIGestureRecognizer 中。请参阅子类化注释:
你可以创建一个 UIGestureRecognizer 的子类来识别一个独特的手势——例如,一个“复选标记”手势。如果您要创建这样一个具体的手势识别器,请务必导入 UIGestureRecognizerSubclass.h 头文件。此标头声明子类必须覆盖、调用或重置的所有方法和属性。
来自Carl Veazey:基本上这个想法是子类应该知道的所有属性/方法都封装在一个单独的 .h 文件中。我想这以不同的方式解决了污染问题。