为什么视图控制器有两个@interfaces?

时间:2012-07-29 19:30:34

标签: ios xcode

我正在学习一些Objective-C,特别是与iOS相关的东西。每当我生成新的UIViewControllerUITableViewController等时,生成的.h.m文件都包含@interface。如果我从@interface文件中删除.m,应用程序将继续编译。 @interface文件中.m的目的是什么?

2 个答案:

答案 0 :(得分:4)

.m文件中的@interface是类扩展(没有名称的类别)。它现在在模板中,允许您放置任何内部方法或ivars的声明,您不希望将其暴露给代码的其他部分。

随着现代Objective-C运行时的出现和clang的进展,一个写得很好的类应该:

1)标题中只有公共方法

2)在内部类扩展

中声明了ivars和内部方法

答案 1 :(得分:3)

从技术上讲,它是一个“类扩展”(参见("Extensions" section of) the Objective-C intro docs)。实际上,将其用作“私有”接口(它只对其存在的文件“可见”)已经变得很普遍。 Objective-C不会阻止任何其他人调用这些方法,但他们不会“看到”它们(将.h文件视为公共接口并将此匿名类别视为您的私有接口)。

宣布@property你不想公开曝光是很方便的。