2013-04-30 46 views
0

我发现很难相信没有straightforward的方式来声明其在.m文件中的受保护属性(以避免使用只有子类需要了解的变量来污染.h文件)。有没有一种方法让baseClass声明受保护的变量而不污染.h文件?

代码来表达,我想做到这样的事:

// SuperClass.h 
NOTHING! 

// SuperClass.m 
@interface SuperClass 
@property (nonatomic, retain) variable; 
@end 

// SubClass.m 
// do something with variable 

更新:这种在UIGestureRecognizer发生的..看subclassing notes

您可以创建一个UIGestureRecognizer识别 独特手势的子类,例如“复选标记”手势。如果您要创建这样一个具体的手势识别器,请确保导入 UIGestureRecognizerSubclass.h头文件。该标题声明 子类必须覆盖,调用, 或重置的所有方法和属性。

Carl Veazey:基本想法是,所有的属性/方法的子类应该知道的被封装在一个单独的.h文件中。我想这解决了一个不同的方式污染问题。

+0

您的派生类究竟如何知道'm'文件中的内容? '.h'和'.m'文件的整个想法是提供一个*定义*然后一个隐藏*实现*。 – 2013-04-30 08:56:24

+0

我想我明白你在说什么..所以,让我们说,公司x正在销售一段代码,他们只显示.h文件并隐藏其他所有内容..这段代码的使用者必须知道什么变量/方法他们可以继承.. – abbood 2013-04-30 09:00:26

+0

@ Moo-Juice请参见 – abbood 2013-04-30 12:14:28

回答

0

您可以在.m类中实现类别。

+1

不好足够..你不能保存实例变量的类别没有一些可怕的工作 – abbood 2013-04-30 08:59:00

+0

[可怕的工作](http:// stackoverflow。com/a/4147242/766570)我的意思是[关联参考](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html#//apple_ref/doc/ UID/TP40001418-CH3g-SW5) – abbood 2013-04-30 12:16:07

相关问题