Class 和 import

https://blog.csdn.net/zanshiyonghuming/article/details/50833260

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  就可以了

原文 :

https://blog.csdn.net/zanshiyonghuming/article/details/50833260

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名...
    Vison_朝花夕拾阅读 355评论 0 0
  • 在iOS开发过程中,我们在一些源码中经常会看到导包的时候有的用#import进行导包,但是有的的时候也会看到用@c...
    1f2acd8e5168阅读 1,819评论 0 5
  • @class 只是用于 告诉引用的类, 我需要用你这个类了,就是一个类的类名引用,但是他不能引用里面的方法和成员变...
    一只不断前进的小蜗牛阅读 859评论 0 1
  • 今晚的乐乐爸爸真感觉伤心了! 平时你自认为很不屑的人,可看见他伤心难过的样子,还是会忍不住难受,所以有人说所有夫妻...
    茶心1阅读 514评论 0 1
  • 爱上了自由 没有更远的地方 择日必往 开始我们幻想,后来我们抱怨。青春一过便不再幻想,可抱怨能到死时。穷抱怨,苦抱...
    楼台花舍阅读 301评论 2 9