IOS开发之----#import、#include和@class的区别
2016-01-22 10:28
459 查看
1. import会包含这个类的所有信息,包括实体变量和方法(.h文件中),而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,后面会再告诉你。2. 在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。 备注:#import 就是把被引用类的头文件走一遍,即把.h文件里的变量和方法包含进来一次,且仅一次,而@class不用,所以后者编译效率更高。3. 在编译效率方面考虑,如果你有100个头文件都#import了同一个头文件,或者这些文件是依次引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。而是用@class则不会。4. 如果有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误,如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。总结: 1. 如果不是c/c++,尽量用#import。 2. 能在实现文件中#import,就不在头文件中#import。 3. 能在头文件中@class+实现文件中#import,就不在头文件中#import。
相关文章推荐
- ios import双引号和尖括号的区别
- iOS视频处理之---视频截取及添加背景音乐
- 盘点iOS开发者必看的105个全球最佳博客
- iOS开发笔记--TableView 详细解释
- iOS开发笔记--错误 ARC forbids explicit message send of'release'
- iOS开发笔记--添加第三方类库造成的linker command failed with exit code 1 (use -v to see invocation)的错误调试
- iOS开发笔记--字符串连接问题
- iOS开发笔记--项目重命名
- iOS开发笔记--将图片设置为主界面背景
- iOS开发笔记--调用iPhone的短信、地图、电话、邮件、浏览器
- iOS开发笔记--NSString字符串处理
- iOS开发笔记--如何自定义启动画面Default.png加载时间
- iOS开发--常用技巧 (Cocoa Pods 使用)
- ios 控制页面的横竖屏
- 整理常用的iOS第三方资源
- 常用的iOS第三方资源
- iOS 更换开发者账户的问题
- iOS9适配 之 关于info.plist 第三方登录 添加URL Schemes白名单
- iOS开发小技巧
- 详解iOS开发中使用storyboard创建导航控制器的方法