深入理解Objective-c中@class的含义.docx_第1页
深入理解Objective-c中@class的含义.docx_第2页
深入理解Objective-c中@class的含义.docx_第3页
深入理解Objective-c中@class的含义.docx_第4页
深入理解Objective-c中@class的含义.docx_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

深入理解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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论