1、@class的作用:仅仅告诉编译器某个名称是一个类
比如@class Person; 仅仅告诉编译器Person是个类
2、开发中引用一个类的规范
1> 在.h文件中用@class来声明类
2> 在.m文件中用#import来包含类的所有东西,这个是跟性能有关系的
<1> @class不能办到#import不能干的事情,循环包含,循环声明,循环引用
<2> @class还有个好处,提高编译效率
3、@class和#import的区别
1> #import 方式会包含被引用类的所有信息,包括被引用类的变量和方法;
2> @class方式只是告诉编译器A.h中B *b只是类的声明,具体这个类的声明信息,这里不需要知道,等实现中真正用到的时候,才会真正去查看B类中信息,在.m实现文件中,如果需要引用到被引用类的实体变量或者方法时,还需要使用#import方式引用被引用类
3> 应用场合: 如果是继承某个类就要导入类的头文件;如果只是定义成员变量属性用@class
4、两端循环引用解决方案
1> 一端用retain
2> 一端用assign,assign就是直接复制,dealloc里面就不需要释放了
一般两端循环引用的时候用@class,当在.m文件需要用到的时候再把头文件搞进来
另外:@class跟@protocol的用法一样 |