objective-c @class

  • 作用:可以简单的引用一个类
  • 简单使用:
    • @class className;
    • 仅仅是告诉编译器:className只是一个类;并不会包含这个类的所有内容
  • 具体使用
    • 在.h文件中使用@class引用一个类
    • 在.m文件中使用#import包含这个类的.h文件
第一种应用场景
  1. 如果都在.h中import,假如A拷贝了B,B拷贝了C,C被修改,那么B和A都需要重新拷贝
  2. 如果在.h中使用@class,在.m中import,那么如果一个文件发生变化,只有和这个文件有直接关系的那么文件才会重新拷贝

如果A、B对象相互拥有,此时会形成循环retain
解决方法:让其中一方不要做retain操作

所以使用@class可以提升编译效率

第二种应用场景

如果两个类循环依赖造成死循环报错

在.h中使用@class,在.m中使用import

在.h中使用@class,不会做任何拷贝工作,在.m中使用import,只会拷贝对应的文件,不会造成死循环

和#import的区别
  1. @class只是告诉编译器有这个类,其他什么信息完全不知道
  2. 效率比#import高
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容