iPhone开发之@Class与#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中声明的类进来。
iPhone开发之@Class与#import的区别相关推荐
- iphone开发 NSURL中fileURLWithPath和URLWithString的区别
2019独角兽企业重金招聘Python工程师标准>>> iphone开发 NSURL中fileURLWithPath和URLWithString的区别: 1.我做了如下实验:(摘抄) ...
- iPhone开发中的技巧整理(四)
iphone开发笔记 退回输入键盘 - (BOOL) textFieldShouldReturn:(id)textField{ [textField resignFirstResponder]; } ...
- iphone开发笔记和技巧总结
在iphone程序中实现截屏的一种方法: //导入头文件 #importQuartzCore/QuartzCore.h //将整个self.view大小的图层形式创建一张图片imageUIGrap ...
- ios学习--iphone开发笔记和技巧总结(原址持续更新)
ios学习--iphone开发笔记和技巧总结(原址持续更新) 分类: ios Object-C2012-04-18 10:16 2716人阅读 评论(1) 收藏 举报 uiviewiphonelist ...
- iphone 开发杂文
退回输入键盘 - (BOOL)textFieldShouldReturn:(id)textField{ [textField resignFirstResponder]; } CGRe ...
- iphone 开发笔记
iphone 开发笔记 退回输入键盘 - (BOOL)textFieldShouldReturn:(id)textField{ [textField resignFirstResponde ...
- iPhone开发学习笔记
http://blog.csdn.net/huanglx1984/article/details/4325377 Objective-C introduction iphone使用objective ...
- iPhone开发进阶(9)--- 用SQLite管理数据库
博主:易飞扬 原文链接 : http://www.yifeiyang.net/iphone-developer-advanced-9-management-database-using-sqlite/ ...
- iPhone开发的一些小技巧
[转载]iPhone开发的一些小技巧 (2011-10-29 20:13:02) 转载原文 标签: 转载 原文地址:iPhone开发的一些小技巧作者:哈哈 一,修改状态栏: 1.加入[[UIAppli ...
最新文章
- BASH 进阶 文件描述符号的使用
- Jquery对象的文档处理,CSS和事件
- cmake (2)路径指令
- C#-自动(也叫隐式)类型转换及规则 018
- 表单字段三维数组名_【技术汇】回转式空气预热器温度场三维数值模拟
- C# 析构函数(Destructor)和终结器(Finalizer)——托管资源的释放
- 三维错切变换矩阵_图像的仿射变换
- ICEFaces Note(7)
- 100个高质量Java开发者博客 【转】
- Java日志框架 -- Logback(Logback入门案例、logback配置(FileAppender、异步日志、拆分Appender、过滤器)、logback-access)
- ubuntu全版本安装 NVIDIA显卡驱动、以及重装、卸载
- 减轻使用者的从众心理压力 知名社群网站将隐藏赞数
- 自我觉察日志——9.17 (为什么老想买东西?)
- 实时视频带宽的计算过程
- QT笔记- 如何判断窗口小部件是否自动出现(或隐藏)了滑条?
- 霍兰德- 职业兴趣测评
- 用Winfrom动态生成SQL的insert语句
- 算法之路,带你轻松学废算法系列之哈希表
- python定向爬虫_Python-定向爬虫的简单使用
- go语言零基础教程:第一个程序:HelloWorld