




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深入理解Objective-c中class的含义在objective-c中,经常会遇到一个类使用另一个类,并且在类的头文件中需要创建被引用类的指针。如下面的代码:A.h文件其中,A类是引用类,B类是被引用类,在这暂不考虑的实现文件。通常引用一个类有两种方法:一种是通过#import方式引入;另一种是 通过class方式引入。这两种方式的区别在于:1、#import方式会包含被引用类的所有信息,包括被引用类的变量和方法;而class方式只是告诉编译器在A.h文件中B *b只是类的声明,具体这个类里面有什么信息,这里不需要知道,等实现文件中真正要用到时,才会真正的去查看B类中的信息;2、使用class方式由于只需要被引用类(B类)的名称就可以了,而在实现类中由于要用到被引用类中的实体变量和方法,所以需要使用#import来包含被引用类的头文件;3、通过上面两点好我们也很容易知道这个两个方式在编译效率上的差异,如果有上百个文件都#import了同一个文件,或者这些文件依次被#import(A-B,B-C,C-D.),一旦最开始的头文件稍有改动,后面引用到这个文件的所有类都需要重新编译一遍,而相对来讲,使用class方式就不会出现这种问题了;4、对于循环依赖关系来说,比如A类引用B类,让同时B类也引用A类,B类代码:B.h文件当系统运行时,编译会报错:当使用class在两个类中相互声明就不会出现编译报错。结论:由上可知,class是放在interface中,只是在引用一个类,将这个被引用类作为一个类型;在实现文件中,如果需要引用到被引用类的实体变量或者方法时,还需要使用#import方式引入被引用类。如:举个例子说明一下:在ClassA.h中#import ClassB.h 相当于#include整个.h头文件。如果有很多.m文件#import ClassA.h,那么编译的时候这些文件也会#import ClassB.h 增加了没必要的#import,浪费了编译时间。在大兴软件项目中,减少.h文件中的#include是非常重要的。如果只是ClassB那就没有#include ClassB.h ,仅需要在需要用到的ClassB的.m文件中#import ClassB.h。那么什么时候可以用呢?如果ClassA.h中仅需要声明一个ClassB的指针,那么就可以在ClassA.h中声明:classB.ClassB *pointer;所以,一般来说,class是放在interface中的,只是为了在interface中引用这个类,把这个类作为一个类型来用的。在实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑类成本控制方案设计
- 天津企业咨询培训方案
- 中端建筑门窗方案设计
- 互联网裂变营销方案案例
- 江苏活动策划方案收费标准
- 中药的国际化营销方案
- 国家医药管理局中医师承合同6篇
- 纸箱包材类制造企业安全标准化所需资料
- 金库建筑项目方案设计流程
- 咨询型解决方案
- (2025年标准)教师定岗协议书
- GB/T 45980-2025飞机供电特性数字式测试要求
- 2025年度粉末涂料生产与销售合同范本
- 8 回忆鲁迅先生(课件)语文统编版2024八年级上册
- 三力测试题库2025版考题及答案
- 2025北京京剧院招聘工作人员10人笔试模拟试题及答案解析
- 2025工勤考试收银审核员(高级技师)考试题(含答案)
- 2025年蜀道投资集团有限责任公司招聘笔试备考题库附答案详解(达标题)
- GB/T 27043-2025合格评定能力验证提供者能力的通用要求
- 加工公司实验室设备管理办法
- 美术基础 课件 第1、2章 美术简介;素描
评论
0/150
提交评论