iOS 中 @class 和#import
@class 和 #import 的区别
使用
#import
引入一个类的头文件,编译时会将该类的头文件中的所有信息都引入,包含属性和方法使用
@class
仅仅只是告诉编译器声明的类的名称,并不会引入该类的其他信息,而我们所关心的也仅此一点,而不需要知道该类的内部有哪些属性和方法,因此使用@class
可以提升编译性能。使用@class
引入,这种方式叫“向前声明”该类
应用场景
一般情况下,我们在.h 头文件中使用
@class
,可以提升编译性能;而在.m 实现文件中,往往就需要知道该类的内部信息了,这时就需使用#import
来引入这些信息
复制代码
一般如果有继承关系的用
#import
,如B是A的子类,那么在B中声明A时用#import
复制代码
为了避免两个类之间循环引用,我们在某一个类的.h 文件中用
@class
进行导入如果俩个类是循环引用关系,A 类引用 B 类,同时 B 类也引用 A 类,这时用
#import
,代码在编译时是会报错
复制代码
为了解决这个问题,可以采用
@class
的方式进行引用,一个用#import
一个用@class
,或者两个都用@class
都可以避免报错
复制代码
版权声明: 本文为 InfoQ 作者【NewBoy】的原创文章。
原文链接:【http://xie.infoq.cn/article/44d883826c2594d106354c7cd】。文章转载请联系作者。
评论