iOS 知识点

@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方式引入被引用类


上一篇 下一篇

猜你喜欢

热点阅读