@class和#import

@class

作用:

  可以简单的引用一个类

简单使用:

  @class Dog;

  仅仅是告诉编译器,Dog是一个类;并不会包含Dog这个类的所有内容

具体使用:

  在.h文件中使用@class引用一个类

  在.m文件中使用#import包含这个类的.h文件

作用上的区别

  #import会包含引用类的所有信息(内容),包含引用类的变量和方法

  @class仅仅是告诉编译器有这么一个类,具体这个类里有什么信息,完全不知道

效率上的区别

  如果有上百个头文件都#import了同一个文件,或者这些文件依次被#import,那么一旦最开始的头文件稍有改动,后面引用到这个文件的所有类都需要重新编译一遍,编译效率非常低

  相对而言,使用@class方式就不会出现这种问题了

其他使用场景

  对于循环依赖关系来说,比如A类引用B类,同时B类也引用A类

  这种嵌套包含的代码编译会报错

  当使用@class在两个类相互声明,就不会出现编译报错

原文地址:https://www.cnblogs.com/saurik/p/4831380.html