我对Objective-C #import感到非常困惑。
我搜索并找到了几个教程,说如果我有很多约束,比如
#define val1
#define val100
最好将所有约束放在一个文件中并导入此文件以重用所有值。
但我仍然感到困惑,我看到很多代码示例#import所有其他文件的标题,其中没有
#define constraints
这两个文件是普通的UIViewControllers,但它们的标题是导入的。
#import viewcontroler1.h
#import viewcontroler2.h
我很困惑,请帮助我。
答案 0 :(得分:3)
我不确定我是否真的理解你的要求,但如果你不需要,你应该避免在其他头文件中导入头文件。相反,#import
.m
文件中需要@class
标题,而是使用.h
文件中的constants.h
指令。
来自Apple docs:
@class指令最小化编译器看到的代码量 和链接器,因此是提供前进的最简单方法 声明一个类名。简单,它避免了潜力 导入仍导入其他文件的文件可能带来的问题 文件。例如,如果一个类声明了静态类型的实例 另一个类的变量,以及它们的两个接口文件 另外,这两个类都没有正确编译。
否则,您可能会将导入的变量暴露给比实际需要的更多的类。如果您要导入viewcontroler1.h
中的viewcontroler1.h
,则导入constants.h
的任何其他类也会{{1}}。有时这可能是你需要的,但通常不是。
希望在某些方面有所帮助......
答案 1 :(得分:1)
#import
告诉编译器(简单来说)在进一步之前读取导入文件的内容。
如果导入包含#define
语句的文件,则在该文件中编写代码时,可以使用其中的宏。
如果导入自定义类的.h文件,则可以使用自定义类。否则你可以尝试创建自定义类,编译器将不知道你在说什么。
在理论中,您可以在一个庞大的文件中编写项目的每一行代码,而不必使用#import
(除了导入UIKit和Foundation头文件! )。但那将是非常愚蠢的。
答案 2 :(得分:-1)