本帖最后由 nsswift 于 2015-6-12 17:24 编辑
C语言和C++中我们都使用#include来包含头文件,但是这样我们容易一个头文件可能被包含多次,这样就需要我们用#ifndef,#end这样的宏定义来避免文件重复引用的问题。
Objective-C中则使用了#import来包含头文件,这样一个头文件就只能包含一次,直接避免了c语言和c++中使用#include文件重复引用。
@class和#import 的区别: #import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这个类是如何定义的,暂时不用考虑。
比如在.h文件中我们只需要知道被引用的类的名称就可以了,不需要调用实体变量和方法,所以.h文件一般只需要@class来声明这个名称是类的名称,头文件中使用@class不仅效率高(比如类文件更改其他包含这个类的都需要重新加载),同事还可以解决循环引用的问题。而在.m文件里边因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。 |