@class和#import
2019-06-02 本文已影响0人
一直很安静_25ae
1>>>@class作用
仅仅告诉编译器,某个名称是一个类
举例 @class Person;//仅仅告诉编译器Person是一个类
2>>>开发中引用一个类的规范
2.1>在.h文件中用@class来声明类
2.2>在.m文件中用#import来包含类的所有东西
如果两个类相互引用就会出现循环引用的问题,因此只需要在.h文件中用@class告诉编译器这是指一个类就可以了在.m文件中#impot相应的类
在MRC中两端循环引用的解决方案
1>一端用retain
2>一端用assign
在ARC中两端循环引用的解决方案
1>一端用copy
2>一端用weak
@class和#import的区别
1>#import方式会包含所引用类的多有信息,包括被引用类的变量和方法;而@class方式只是告诉编译器在A.h文件中B *b 只是类的声明,具体这个类里有什么信息,这里不需要知道,等.m实现文件中怎正用到时,才会真正去查看B类中的信息
2>如果有上百个头尾文件都#import了同一个文件,或者这些文件被依次#import,那么一旦最开始的头文件稍微有些改动,后面引用到这个文件的所有类都需要重新编译一遍,这样的效率也是可想而知的,而相对来讲,使用@class就不会出现这样的问题
3>在.m实现文件中,如果需要引用到被引用类的实体变量或者方法时,还需要使用#import方式引入被引用类