zoukankan
html css js c++ java
#include #import @class 讲解
#include 区分 #include
与#include "x.h"的作用 #include
:它用于对系统自带的头文件的引用,编译器会在系统文件目录下去查找该文件 . #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中声明的类。 来自:
http://cmdeye.com/ios/thread-130-1-1.html
查看全文
相关阅读:
BeanUtils
eclipse导出说明文档
MYSQL5.7的安装
如何生成Android的keystore文件
keystore
安卓开发eclipse如何导出项目
常用十六进制颜色对照表代码查询
CheckBox
RadioGroup和RadioButton
TStringList 与 泛型字典TDictionary 的 哈希功能效率PK
原文地址:https://www.cnblogs.com/wanyakun/p/3403302.html
最新文章
[C++]PAT乙级1011. A+B和C (15/15)
[C++]PAT乙级1010. 一元多项式求导 (25/25)
[C++]PAT乙级1009. 说反话 (17/20)
硕士研究生、高考志愿院校与专业考量模型
[C++]PAT乙级1008.数组元素循环右移问题 (20/20)
[C++]PAT乙级1007.素数对猜想 (20/20)
[C++]PAT乙级1006. 换个格式输出整数 (15/15)
[C++]PAT乙级1005. 继续(3n+1)猜想 (25/25)
[C++]数值与字符串转换问题
[转] Transitions: Going from Shots to the Insulin Pump
热门文章
[转] What is Ec/Io (and Eb/No)?
[转] Gradle中的buildScript代码块
[转] 使用Spring Boot和Gradle创建项目
[转] The Single Biggest Obstacle to Trading Success
[转] PostgreSQL学习手册(函数和操作符)
[转] java Class类
[转] PostgreSQL的时间/日期函数使用
[转] PostgreSQL学习手册(数据表)
[转] 彼得林奇:最珍贵的成长股投资精髓
JSP中文乱码问题
Copyright © 2011-2022 走看看