2019独角兽企业重金招聘Python工程师标准>>>

#import  @class 的区别

主要为了解决引用死锁

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


转载于:https://my.oschina.net/u/1244156/blog/195197

#import和@class 的区别相关推荐

  1. import和require的区别

    原文地址:https://www.cnblogs.com/sunshq/p/7922182.html import和require的区别 node编程中最重要的思想就是模块化,import和requi ...

  2. python3 import 和__import__() 的区别

    首先来说一下两者的区别: import指令做了两件事:1)搜索module,2)绑定到局部变量 内置函数__import__()只做了一件事:搜索module import指令执行过程中是调用__im ...

  3. import xxx from 和 import {xxx} from的区别

    1.vue import FunName from '../xxx' 1.js export defualt function FunName() {return fetch({url: '/arti ...

  4. @import和@class的区别

    1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你. 2.在头文件中, 一般只需 ...

  5. import与require的区别

    载入一个模块 import() 与 require() 功能相同,但具有一定程度的自动化特性. 假设我们有如下的目录结构: ~~~ app/ app/classes/ app/classes/MyCl ...

  6. from...import、import......as与from…import* 的含义与区别

    一.import-as import:导入一个模块:注:相当于导入的是一个文件夹,是个相对路径 import A as B:给予工具库 A 一个简单的别称 B ,可以帮助记忆.例:import tor ...

  7. import * as xxx from ‘xxx ’ 与import xxx from ‘xxx’区别

    import * as 名称 from '路径': 路径里面 只有(export const setToken1=({commit},val)=>{commit("name" ...

  8. db2import详解_DB2 import 与 load的区别

    Import和Load 都可以将数据导入到DB2服务器中,但是2者是有很大区别的. Import 其实执行了SQL 的INSERT 操作.和INSERT 操作一样,Import 执行的时候会激活触发器 ...

  9. import 别名_python中的import、from import以及import as的区别

    首先介绍一下import和include的区别或者说import相对include的好处: import导入的内容只会被包含一次,在引入之前会检测是否已经存在该模块,不存在才会被引入,而include ...

最新文章

  1. 用OpenCV实现超轻量的NanoDet目标检测模型!
  2. 真核转录组(denovo/resequencing)及案例分析
  3. pku 1925 Spiderman DP
  4. Python基础—06-函数基础
  5. 什么是web标准??
  6. java插入排序算法实现
  7. javascript:查找“跳号”号码
  8. 一口气看完了蔡学镛的--爪哇夜未眠(第二版)
  9. Oracle系统表查询方法
  10. 进入32位保护模式之路
  11. Github上被疯传的Redis实战文档也太香了
  12. php 数组处理方法,关于PHP数组问题的处理方法
  13. 谁说大象不能跳舞——《读书笔记》
  14. 邻接表——最简单易懂的写法——向非我非非我大佬低头
  15. 训练第一步:python获取文件下图片
  16. python以图搜图_以图搜图(一):Python实现dHash算法(转)
  17. 蓝牙技术|蓝牙在智能手表上的应用
  18. 继领英后,又一家科技公司宣布离开中国!
  19. POJ 1419 【最大团模板解析】
  20. Kaggle Cassava Leaf Disease Classification 木薯叶疾病分类竞赛

热门文章

  1. centos7切换root为mysql,CentOS 7中使用rpm方式安装MySQL 5.7后无法使用root登录解决
  2. nginx解决浏览器跨域问题_使用nginx解决浏览器跨域
  3. 林肯android auto,林肯mkz仪表盘怎么设置中文
  4. xp系统打开计算机硬盘分区,XP系统下怎么进行硬盘分区啊?
  5. cmd命令java出错_Java基础知识_JavaSE_02
  6. 甜甜用计算机1050除以一个数,上册四年级数学期末试卷带答案
  7. greenplum数据导入到mysql,将数据从DB2数据库传输到greenplum数据库
  8. js判断数据类型(如数组)及数组操作函数
  9. 只有得到祝福才是好婚姻
  10. 从零学ELK系列(三):Centos安装Docker(超详细图文教程)