#import 跟 #include、@class 之间的区别
#include 是 C/C++ 导入头文件的关键字 是完整的包含某个文件的内容(包括该文件中被导入的文件)
#import 是 OC 导入头文件的关键字
#import 指令是 OC 针对 #include 的改进版本,使用#import ,能确保引用的文件只会被引用一次,不会出现递归包含的问题
#import<> 代表导入 系统自带的框架
#import"" 代表导入我们自己创建的类,导入的是我们的 .h文件,也就是头文件
#import 会链入该头文件的全部信息,包括 实例变量和 方法 等。
@class 的作用: 告诉编译器,我后面跟着的字符串是 类的名称,其余的你不用管!所以用@class的类内部的 实例变量和方法 都不能访问!
编译效率方面区别:@class 在某些情况下编译效率高于 #import
如:你有100个头文件都#import了同一个头文件;或者这些文件是依次引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有 引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。
但是用@class则不会。
编译错误方面:
如:如果有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,
如果使用#import来相互包含,那么就会出现编译错误,
如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现
重复引用方面:#import 可以使用不会出错,#include 不可以避免错误 #include 会有重复引用的错误
如:A 类导入了 C 类的头文件,B 类也导入了 C 类的头文件,D 类又同时导入 A 和 B 类,这就是重复导入 #import则不会有重复引用的问题
#import 跟 #include、@class 之间的区别的更多相关文章
- #import、#include以及@class的区别
一.#import和#include的区别 当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误 但是使用两次#import的话 ...
- IOS开发之----#import、#include和@class的区别
1. 一般来说,导入objective c的头文件时用#import,包含c/c++头文件时用#include. 2. #import 确定一个文件只能被导入一次,这使你在递归包含中不会出现问题.&l ...
- iOS 中 #import同@class之间的区别
很多刚开始学习iOS开发的同学可能在看别人的代码的时候会发现有部分#import操作写在m文件中,而h文件仅仅使用@class进行声明,不禁纳闷起来,为什么不直接把#import放到h文件中呢? 这是 ...
- #import和#include的区别 关键字@class的作用
一.#import和#include的区别当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误但是使用两次#import的话,不 ...
- <%@page include%>、<%@include%>、<jsp:include>三者之间的本质区别
<%@page include%>.<%@include%>.<jsp:include>三者之间的本质区别 先从它的几个内置对象说起. application和se ...
- #import同@class之间的区别
转自:http://blog.sina.com.cn/s/blog_a843a8850101b6a7.html 下面来说一下#import同class之间的区别 在ios中我们经常会在.h和.m中引入 ...
- 1.import和include区别 2.NSLog 和printf区别 3.创建对象做的事情 4. 类和对象方法比较 5 匿名对象优缺点 6. 封装 7.作用域范围 8.id和instancetype 9.自定义构造方法规范 10.nil和Nil及NULL、NSNull区别
1.import和include的区别: import可以防止头文件的重复包含 2.NSLog 和printf的区别: 1,NSLog可以自动换行, 输出调试信息, printf不能. 2,NSLog ...
- #import、#include、#import<>和#import””的区别
一.#import与#include #import不会引起交叉编译的问题.因为在Objective-C中会存在C/C++和Object-C混编的问题,如果用#include引入头文件,会导致交叉编译 ...
- iOS 之 #import与#include的区别及@class
#import 相比#include不会引起交叉编译. @class一般用于头文件中需要声明该类的变量时用到
- #import和#include区别
#import与#include的类似,都是把其后面的文件拷贝到该指令所在的地方 #import可以自动防止重复导入 #import <> 用于包含系统文件 #import"&q ...
随机推荐
- aws在线技术峰会笔记-主会场
容器服务:Elastic container service IoT可以采用无服务器架构.
- Less入门到上手——前端开发利器<二>深入了解
接着昨天的继续... ... 4.嵌套: HTML部分 <table> <tr> <th colspan="3">测试列表标题</th&g ...
- Android 检查手机网络是否可用
添加网络状态权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 代 ...
- MDK的一些设置(尤其是部分代码无法断点问题的解决)
转自http://www.cnblogs.com/worldsing/p/3412323.html
- 作业3---for语句及分支结构else-if
1.本次课学习到的知识点: (1)for语句的一般表达式,执行顺序: (2)指定次序的循环程序设计:数列的累加.累乘等: (3)else-if实现的分支结构可以判断语句的真假 2.实验过程中遇到的问题 ...
- LoarRunner11使用异常及解决方案
1:使用VuGen录制后出现“由于另一个程序正在运行中,此操作无法完成.请选择切换到来激活正在运行中的程序,并更正问题”,点击“切换到”无效果. 解决:在“运行”中输入“msconfig”,选择“启用 ...
- guava学习--hashing
128位的MurmurHash(烽火使用过): 看一下Java标准库中的非加密哈希算法你会发现少了MurmurHash,这是一个简单高效且还是分布式的算法,在许多语言中都有着很好的支持.我们并不是说要 ...
- NOIP系列复习及题目集合
首先是我的酱油记了啦~: Xs的NOIP2014酱油记,持续更新中 知识点方面: noip知识点总结之--贪心 noip知识点总结之--线性筛法及其拓展 noip知识点总结之--欧几里得算法和扩展欧几 ...
- c++英文单词频度统计程序
英文单词频度统计程序(c++版) 写一个程序,分析一个文本文件(英文文章)中各个次出现的频率,并且把频率最高的十个词打印出来. 分析过程: (1) 简单设想大致分为两大步骤: 1.经过文本文件的读操 ...
- Yii2-redis
安装:composer require --prefer-dist yiisoft/yii2-redisredis 版本 >= 2.6.12 添加配置: 'components' => [ ...