objective-c @class
2018-04-10 本文已影响0人
一世长安乱
- 作用:可以简单的引用一个类
- 简单使用:
- @class className;
- 仅仅是告诉编译器:className只是一个类;并不会包含这个类的所有内容
- 具体使用
- 在.h文件中使用@class引用一个类
- 在.m文件中使用#import包含这个类的.h文件
第一种应用场景
- 如果都在.h中import,假如A拷贝了B,B拷贝了C,C被修改,那么B和A都需要重新拷贝
- 如果在.h中使用@class,在.m中import,那么如果一个文件发生变化,只有和这个文件有直接关系的那么文件才会重新拷贝
如果A、B对象相互拥有,此时会形成循环retain
解决方法:让其中一方不要做retain操作
所以使用@class可以提升编译效率
第二种应用场景
如果两个类循环依赖造成死循环报错
在.h中使用@class,在.m中使用import
在.h中使用@class,不会做任何拷贝工作,在.m中使用import,只会拷贝对应的文件,不会造成死循环
和#import的区别
- @class只是告诉编译器有这个类,其他什么信息完全不知道
- 效率比#import高