@implementation中有@interface - 为什么会这样?

Mar*_*ald 4 cocoa objective-c

这是一个相当愚蠢的问题 - 我正在查看一些Cocoa示例代码,并且.m文件中的@interface块以及标题.例如,在AppDelegate类头中,UIWindow和UI导航被定义为实例变量,但@property声明实际上是在实现文件中进行的.是否存在功能性原因,是一种风格选择,还是......?

Geo*_*che 7

如果您只需要一些自定义委托在内部使用另一个类,则无需在标头中公开接口.
它只是增加了不必要的噪声,并使接口可用,可能不是为公共使用而设计的,或者在类的上下文之外没有用.

类的方法和属性也是如此 - 如果要为实例变量使用声明的属性但不希望它们可公开访问,则不必在头中声明它们.类扩展允许您这样做,参见例如"如何制作私有财产?" .