美文网首页
#import.h和@class+类名的区别

#import.h和@class+类名的区别

作者: 陪你看日出去 | 来源:发表于2016-07-13 17:36 被阅读35次

#import.h和@class+类名的区别

(1)impor会包含这个类的所有信息,包括实体变量和方法,而@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中声明的类进来。

相关文章

  • #import.h和@class+类名的区别

    #import.h和@class+类名的区别 (1)impor会包含这个类的所有信息,包括实体变量和方法,而@cl...

  • 类的声明与创建

    基本方法访问修饰符 +class+类名注意:类名不能是关键字,类名首字母一般大写(虽然小写并不会报错,但习惯大写)...

  • python/scala常用备忘

    scala 1 类定义 一个最简的类的定义就是关键字class+标识符,类名首字母应大写。 关键字new被用于创建...

  • iOS self和类名 的区别

    最近在看《iOS开发快速进阶与实战》,其中看到使用self和类名的区别。之前我一直以为这两者没什么区别,现在觉得还...

  • 接口 对象名=new 类名 和类名 对象名 =new 类名的区别

    接口。多态,子类继承父类,父类引用指向子类对象,可以调用子类重写的方法。后者可调用的方法多一些。

  • Java中的异常(二)

    throws和throw的区别 throws 用在方法声明后面,跟的是异常类名 可以跟多个异常类名,用逗号隔开 表...

  • Swift对象和类

    Swift的对象和类 使用 class 和类名来创建一个类。 类中属性的声明和常量、变量声明一样,唯一的区别就是它...

  • Flask框架4

    查询: #filter和filter_by区别 # filter(类名.xxx==)--用的多一些 # filte...

  • 前端面试题整理——CSS篇

    1.CSS 中类 (classes) 和 ID 的区别。1.书写上的差别:class名用“.”号开头来定义,id名...

  • #3-Category和Extension 区别

    Category和Extension的区别: 形式不同 类别是 类名(xxx)【xxx 不写是匿名类别】, 扩...

网友评论

      本文标题:#import.h和@class+类名的区别

      本文链接:https://www.haomeiwen.com/subject/vntejttx.html