1. import与include的 <> 与 "" 的区别
<>主要是对系统文件的引用 #import<UIKit/UIKit.h>
" " 是对用户自定义文件的引用 #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在两个类的头文件中相互声明,则不会有编译错误出现。