我们可以省略 header .h 文件并在 objective c 中仅使用 .m 文件吗?

Can we omit header .h files and use only .m file in objective c?

最近我切换到一个主要用 objective-c 编写的项目,我对它很陌生,但在一个文件中我很惊讶地看到只有一个 .m 文件并且像往常一样缺少 .h 文件.但是代码仍然可以正常工作。我的问题是 .h 文件不是强制性的?可以将它们合并到一个 .m 文件中吗?我找到了 .m 文件的示例代码片段。

代码片段是:

#import "CusView.h"
@interface MyFile: ViewController {
}
@property (nonatomic, retain) NSString *someProp;
-(void) fillTheText : (NSString*)text;
@end
@implementation MyFile
-(void) fillTheText : (NSString*)text {
NSLog(@"Print here")
}
@end

从技术上讲,可以将所有内容都包含在 m-file 中。另请参阅 here 和下面的第 3 项。

关于您的具体示例:

  1. 您是否在项目中搜索了 h-file?它可能会被放入其他文件夹。

  2. 您检查过代码中是否使用了 MyFile 吗?它可能只是未使用且未导入任何地方。

  3. 您检查过 MyFile 是如何导入到使用的地方的吗?它可能只是用 m-file.

    导入的

从根本上说,C 或 Objective-C 中代码的位置并没有什么神奇之处。您可以将 @interface 放在 .m 中,或将 @implementation 放在 .h 中。对于相同的 class,您可以将多个 @implementations 分布在多个文件中,然后分别编译它们(class 扩展名),甚至 #import 它们。

当然,你可以并不意味着你应该。这只是为了指出编译器真的不关心代码来自哪里,它只关心正在编译的任何内容的实际内容。