OC中 #include、#import、@class 区别
来源:互联网 发布:python回调函数传参数 编辑:程序博客网 时间:2024/06/06 03:45
#include
区分 #include <x.h>与#include "x.h"的作用
#include <x.h>:它用于对系统自带的头文件的引用,编译器会在系统文件目录下去查找该文件.
#include "x.h":用户自定义的文件用双引号引用,编译器首先会在用户目录下查找,然后到安装目录中查找,最后在系统文件中查找。
在使用#include的时候要注意处理重复引用(这也是objc中#include与#import的区别)
例如:ClassA 与 ClassB同时引用了ClassC,不做重复引用处理的时候在ClassD中同时引用ClassA,ClassB编译会提示对ClassC重复引用的错误.
我们可以:#ifndef _CLASSC_H
#define _CLASSC_H
#include "ClassC"
#endif
这样处理在编译时就不会有重复引用的错误出现(在objc中#import解决了这个问题,这是它们的区别)
#import
#import 大部分功能和#include是一样的,但是他处理了重复引用的问题,我们在引用文件的时候不用再去自己进行重复引用处理.
@class
主要是用于声明一个类,告诉编译器它后面的名字有这么一个类,用吧没问题,后面会告诉你.也是因为在@class仅仅只是声明一个类,所以在后面的实现文件里面是需要去#import这个类,这时候才包含了这个被引用的类的所有信息。
综上所述#include,#import与@class的区别可以做一下理解:
#include与#import在引用一个类的时候会包含这个类的所有信息包括变量方法等,但是这样做会对编译效率造成影响.比如有100个类都#import了ClassA,那么在编译的时候这100个类都会去对ClassA处理.又比如A被B引用,B被C引用,C被D引用.....此时如果A被修改,那么后面的B,C,D.....都需要重新进行编译.还有一个用法会引起编译错误的就是在ClassA中#import ClassB 在ClassB中#import ClassA那么在编译的时候也会出现未知错误。
所以一般来说,在interface中引用一个类,就用@class,它会把这个类作为一个类型来使用,而在实现这个interface的文件中,如果需要引用这个类的实体变量或者方法之类的,还是需要import这个在@class中声明的类。
- OC中 #include、#import、@class 区别
- oc中import和include的区别
- #include #import @class区别
- include、import、@class区别
- #Import #include @class区别
- OC中@class与#import区别
- #import、#include、@class、#import<> 、#import""的区别
- iOS笔记--oc语法3 (#include和#import的区别、#import和@class的区别)
- #include,#import,@class的区别 .....
- #include,#import,@class的区别
- #import #include @class的区别
- #import ,#include,@class 的区别
- @class,#import,#include的区别
- #include,#import,@class的区别
- #import #include @class的区别
- #include #import @class的区别
- oc语言中 import 和 include 的区别
- object-c中#import #include @class的区别
- VS2005下QT学习笔记-导入.qrc资源文件
- java异常分类
- _vimrc4Vim73
- [转载]收藏:49 款人脸检测/识别的API、库和软件
- Android 中数据库查询方法 query() 中的 selectionArgs 的用法
- OC中 #include、#import、@class 区别
- 凡客陷资金链危机 传闻雷军或将接盘
- android长按home键流程
- IGT视频算法笔试题回忆版
- 图片缓存技术(adnroid官方文档翻译)
- C#调用c代码生成的dll,报PInvoke 签名与非托管的目标签名不匹配
- 对5位以内的正整数处理(判断他是几位数、顺逆序输出)
- 标准库string类型
- 使用DatagramSocket与DatagramPacket传输数据