#import #include与@class的区别
来源:互联网 发布:济宁广电网络客服电话 编辑:程序博客网 时间:2024/05/22 06:49
#import与@class的区别
1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。
2.在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。
3.在编译效率方面考虑,如果你有100个头文件都#import了同一个头文件,或者这些文件是依次引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。而是用@class则不会。
4.如果有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误,如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。
所以,一般来说,@class是放在interface中的,只是为了在interface中引用这个类,把这个类作为一个类型来用的。 在实现这个接口的实现类中,如果需要引用这个类的实体变量或者方法之类的,还是需要import在@class中声明的类进来.
#import和#include的区别
当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误
但是使用两次#import的话,不会报错,所以他可以解决重复导入的问题,他会做一次判断,如果已经导入一次就不导入了
1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。
2.在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。
3.在编译效率方面考虑,如果你有100个头文件都#import了同一个头文件,或者这些文件是依次引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。而是用@class则不会。
4.如果有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误,如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。
所以,一般来说,@class是放在interface中的,只是为了在interface中引用这个类,把这个类作为一个类型来用的。 在实现这个接口的实现类中,如果需要引用这个类的实体变量或者方法之类的,还是需要import在@class中声明的类进来.
#import和#include的区别
当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误
但是使用两次#import的话,不会报错,所以他可以解决重复导入的问题,他会做一次判断,如果已经导入一次就不导入了
0 0
- #include与#import的区别,#import 与@class 的区别
- #import 与 #include的区别,以及 @class
- #import 与 #include的区别,以及 @class
- #include、#import与@class的区别
- #include与#import的区别以及@class
- #import #include与@class的区别
- #import、#include、@class、#import<> 、#import""的区别
- #include,#import,@class的区别 .....
- #include,#import,@class的区别
- #import #include @class的区别
- #import ,#include,@class 的区别
- @class,#import,#include的区别
- #include,#import,@class的区别
- #import #include @class的区别
- #include #import @class的区别
- #import与#include以及@class的区别与联系
- IOS #import与#include和@class的区别
- #include #import @class区别
- Python中关于try/except/finally的基础用法
- Spring学习笔记之IoC容器
- hdu 2191 多重背包裸题(留个模板)
- HTTP Status 404 - No result defined for action XXXX and result success 处理
- C#成魔之路<10>文件及数据流技术(3)
- #import #include与@class的区别
- Poll机制分析
- C++函数基础
- Unable to instantiate Action, loginAction, defined for 'login' in namespace
- poj 1639 Picnic Planning 最小k度生成树
- codeforces 630~~【组合数 C(n,m)】
- Jquery Ajax的success:funtion(data)的data非son类型
- 学习笔记-去掉字符串两头的空格
- hihocoder 1032 最长回文子串 (Manacher算法 详解+模板)