#import #include @class区别

1. import与include的 <> 与 "" 的区别

<>主要是对系统文件的引用    #import

" " 是对用户自定义文件的引用  #import "baseViewController.h"

2.import 与 include 区别

主要是为了防止重复引用的问题

#import 大部分功能和#include是一样的,但是他处理了重复引用的问题,我们在引用文件的时候不用再去自己进行重复引用处理.


如果用include   ClassA中引用ClassC,ClassB引用ClassC,

ClassD同时引用ClassA与ClassB,如果不做重复引用的处理,编译会提示对ClassC重复引用的错误

#import 就不用做重复引用的处理

3.@class与import的区别

@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,不要要知道。

 #import会包含这个类的所有信息(包括实体变量和方法)

在头文件中,一般只需要知道被引用的类的名称就可以了,不需要关心类内部细节,所以用@class

在实现文件中,会用到被引用类的内部的实体变量和方法,所以用#import来包含被引用类的头文件

编译效率方面

    假如你有100个头文件都#import了同一个头文件A,或者这些文件存在依赖关系:A–>B, B–>C, C–>D...。当头文件A发生改变的时候,后面所有引用它的类都需要重新编译,这是非常耗性能的。而用@class则不会。

假如有循环依赖关系:A–>B,B–>A,如果使用#import来相互包含,那么就会出现编译错误,如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。

你可能感兴趣的:(#import #include @class区别)