我正在学习一些Objective-C,特别是与iOS相关的东西。每当我生成新的UIViewController
或UITableViewController
等时,生成的.h
和.m
文件都包含@interface
。如果我从@interface
文件中删除.m
,应用程序将继续编译。 @interface
文件中.m
的目的是什么?
答案 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
你不想公开曝光是很方便的。