我正在学习一些 Objective-C,特别是与 iOS 相关的东西。每当我生成一个新的UIViewController
, orUITableViewController
等时,生成的文件.h
和.m
文件都包含一个@interface
. @interface
如果我从.m
文件中删除 ,应用程序将继续编译。@interface
文件中这个的目的是什么.m
?
问问题
487 次
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 回答