#import、#include、@class、#import<>和#import""的区别

#import、#include、@class、#import<>和#import
日常

import 是 Objective-C 导入头文件的关键字,完整地包含某个文件的内容

1、会自动导入一次,不会重复导入

2、不会引发交叉编译; 因为在 Objective-C 中会存在 C/C++ 和 Objective-C 混编的问题,如果用 #include 引入头文件,会导致交叉编译。


include C/C++ 导入头文件的关键字,完整地包含某个文件的内容.可能出现交叉编译, OC 里面已经没有这个方式引入头文件了, 统一使用 #import

@class 仅仅是声明一个类名,并不会包含类的完整声明.能解决循环包含的问题:当两个类文件有循环依赖关系 ( A 引用 B , B 引用 A ) 时,需要用 @class


import<> 和 import""

<>: 引用系统文件,它用于对系统自带的头文件的引用,编译器会在系统文件目录下去查找该文件。

"": 用户自定义的文件用双引号引用,编译器首先会在用户目录下查找,然后到安装目录中查。


Tip

  • 重复引用:#import 可以使用不会出错,#include 不可以避免错误 #include 会有重复引用的错误:A 类导入了 C 类的头文件,B 类也导入了 C 类的头文件,D 类又同时导入 A 和 B 类,这就是重复导入 #import则不会有重复引用的问题

  • 交叉引用:#import 和 #include 都不适合用,应该用 @class 的方法。A类导入B类的头文件,B类导入A类的头文件的情况

你可能感兴趣的:(#import、#include、@class、#import<>和#import""的区别)