2

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

4

2 回答 2

4

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

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

1) 标头中只有公共方法

2) 在内部类扩展中声明 ivars 和内部方法

于 2012-07-29T19:33:43.873 回答
3

从技术上讲,它是一个“类扩展”(参见Objective-C 介绍文档的(“扩展”部分))。在实践中,将其用作“私有”接口已变得很普遍(它仅对它所在的文件“可见”)。Objective-C 不会阻止任何其他人调用这些方法,但他们不会“看到”它们(将 .h 文件视为您的公共接口,将此匿名类别视为您的私有接口)。

@property声明不想公开公开的 s很方便。

于 2012-07-29T19:36:16.477 回答