ios oc 类之间相互依赖 关于import和@class的区别
2016-03-09 10:24
447 查看
1.import会包含这个类的所有信息,包括实体变量和方法,而@class只告诉编 译器,声明的类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你,所以在头文件中如果用@class声明某个类后,在.m的实现中如果用到声明类的具体方法或变量时还得再#import类
2.在.h头文件中进行声明时用#import的话,如果100个头文件都#import同一个头件,或者这些文件是依次引用的,如A->B,B->C,C->D,当最开始的那个头文件有变化后进行编译时,后面所有引用它的类都需要重新编译,如果引用最开始的头文件的类很多的话,那么这将耗费大量的时间,而用@class则不会,可能有人会想即然.h只是用@class只是简单的一个声明告编译器有这个类不让其报错,那么.m中要用到引入的类的方法和属性时,不还是要#import头文件一次,是的这个是对的,但编译器编译的时候只编译头文件的,所以你的.m中用#import与编译时间没太大关系
3.接下来说说什么时候该用@class,什么时候该用#import进行声明,
(1)一般如果有继承关系的用#import,如B是A的子类那么在B中声明A时用#import
(2) 另外就是如果有循环依赖关系,如:A->B,B->A这样相互依赖时,如果在两个文件的头文件中用#import分别声明对方,那么就会出现头文件循环利用的错误,这时在头文件中用@class声明就不会出错
最重要的来了 如果用了@class 你还是想调用@class类里的方法或者成员变量 你需要要在 在调用类中的.m文件中 在import一下被调用类
比如A类想要应用B类里的方法,你需要在A类的.h中@classB 然后子啊A类的.m中 在importB 就可以了
相关文章推荐
- 【iOS】CoreImage原生二维码生成(一)
- IOS之MVC开发模式
- IOS-2016年最好的15个Web设计和开发工具
- iOS 免费后台系统 Bmob平台
- [iOS]Missing iOS Distribution signing identity for XXXXXX
- ios保存录制好的视频 图片 到相簿
- IOS弹出提示框
- ios之代理
- 数组取出重复元素iOS
- iOS Auto Layout 中的对齐选项
- iOS应用程序内购/内付费(
- iOS将图片保存到指定相册
- iOS析构崩溃问题
- iOS 静态库里的category中的类方法不能识别问题
- IOS 对相册图片进行读取、存储到指定文件夹
- IOS 图片拉伸处理方法
- IOS之rpc实现
- iOS 国际化
- ios:关于图片平铺
- iOS转场动画详解