@class 与 #import 的区别

#import会将此类的全部文件所有导入,而@class只是告诉编译器有这么一个类,引用类名,通常用在.h文件@interface以前;简而言之,就是当只须要定义此类时,只须要@class类名便可,而须要用到此类的方法或变量时,就须要用#import来包含整个类的文件;.net

若是只须要@class,而用了#import是不会报错的,可是会大大影响程序的效率,由于这样在编译过程当中必须将import的全部类都编译一遍,尤为是引用的类比较多时;好比你在A类中import了B类,而B类中又import了c、d类,那程序在编译时要将A,B,c,d类所有编译一遍,而用@class则不会耗费大量时间。get

若是有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,若是使用#import来相互包含,那么就会出现编译错误,若是使用@class在两个类的头文件中相互声明,则不会有编译错误出现编译器

相关文章
相关标签/搜索