我们可以省略 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 项。
关于您的具体示例:
您是否在项目中搜索了 h-file?它可能会被放入其他文件夹。
您检查过代码中是否使用了 MyFile
吗?它可能只是未使用且未导入任何地方。
您检查过 MyFile
是如何导入到使用的地方的吗?它可能只是用 m-file.
导入的
从根本上说,C 或 Objective-C 中代码的位置并没有什么神奇之处。您可以将 @interface
放在 .m
中,或将 @implementation
放在 .h
中。对于相同的 class,您可以将多个 @implementations
分布在多个文件中,然后分别编译它们(class 扩展名),甚至 #import
它们。
当然,你可以并不意味着你应该。这只是为了指出编译器真的不关心代码来自哪里,它只关心正在编译的任何内容的实际内容。
最近我切换到一个主要用 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 项。
关于您的具体示例:
您是否在项目中搜索了 h-file?它可能会被放入其他文件夹。
您检查过代码中是否使用了
MyFile
吗?它可能只是未使用且未导入任何地方。您检查过
导入的MyFile
是如何导入到使用的地方的吗?它可能只是用 m-file.
从根本上说,C 或 Objective-C 中代码的位置并没有什么神奇之处。您可以将 @interface
放在 .m
中,或将 @implementation
放在 .h
中。对于相同的 class,您可以将多个 @implementations
分布在多个文件中,然后分别编译它们(class 扩展名),甚至 #import
它们。
当然,你可以并不意味着你应该。这只是为了指出编译器真的不关心代码来自哪里,它只关心正在编译的任何内容的实际内容。