Objective-C #import用于类

时间:2011-11-01 12:16:21

标签: objective-c

我对Objective-C #import感到非常困惑。

我搜索并找到了几个教程,说如果我有很多约束,比如

#define val1 
#define val100

最好将所有约束放在一个文件中并导入此文件以重用所有值。

但我仍然感到困惑,我看到很多代码示例#import所有其他文件的标题,其中没有

#define constraints 

这两个文件是普通的UIViewControllers,但它们的标题是导入的。

#import viewcontroler1.h 
#import viewcontroler2.h 
  1. 我们什么时候可以简单地创建类的对象为什么要导入它们?
  2. 在.h或.m?
  3. 中导入文件的位置
  4. 要导入的内容,Objective-C中的.h或.m文件?
  5. 我很困惑,请帮助我。

3 个答案:

答案 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)