#import与#include、@class有什么区别?

2023-11-19

#import与#include、@class有什么区别?

#import与#include都是用来引入头文件的,与#include相比,Objective-C中#import的优势是不会重复引入头文件,相当于多了C/C++中#pragma once的作用,它可以保证头文件只被编译一次。

@class相当于 只是在头文件声明一下要用到的类的头文件(前向声明),告诉编译器有这样一个类的定义但暂时不要将类的实现引入,让该类定义的变量能够编译通过,直到运行起来时才去查看类的实现文件。但实际上这样也只能起到在头文件声明该实例变量的作用,在.m文件中,如果用到该类的实现细节(属性和方法),那么还是要通过#import再次引入类的头文件。使用@class的好处是将头文件的引入延迟了,至少延迟到了.m实现文件中,这样符合“直到真正用到的时候在确定引入”的动态思想,尽量往后拖延,更重要的是这样也可以有效地避免头文件的重复引入甚至循环引用等问题

#import< >与#import""又有什么区别?

#import<>与#import""的区别和C/C++中#include<>与#include""的区别一样:使用尖括号<>指的是用来引入系统的头文件,而使用引号""指的是用来引入本地用户的头文件,如果在本地文件中没找到头文件,那么会去系统文件中查找头文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

#import与#include、@class有什么区别? 的相关文章

随机推荐

  • 线性回归误差项方差的估计

    线性回归误差项方差的估计 摘要 线性回归误差项概念的回顾 残差平方和 residual sum of squares 残差平方和的期望 实验验证 参考文献 摘要 之前在文章线性回归系数的几个性质 中 我们证明了线性回归系数项的几个性质 在这
  • 微信小程序中组件间通信的三种方式

    事先准备 创建一个项目够 修改目录下的app json 在pages中注册页面 同时新增test1组件 也在app json中注册为全局组件 并命名为my test app json 配置 pages pages home home pag
  • JUnit4 initializationError[Runner:JUnit4](0.001s)junit4报错

    junit版本 4 12 如图 原因 缺少 依赖的jar hamcrest core 1 1 jar 添加后
  • vue判断undefined_这几个小技巧,让你书写不一样的Vue!

    前言 最近一直在阅读Vue的源码 发现了几个实战中用得上的小技巧 下面跟大家分享一下 同时也可以阅读我之前写的Vue文章 vue开发中的 骚操作 挖掘隐藏在源码中的Vue技巧 抽丝剥茧般的阅读源码 将 nextTick 拉下神坛 隐藏在源码
  • Spring框架之AOP详解

    Spring AOP 理论 AOP 灵魂三问 AOP的一些术语概念 Spring AOP 底层实现 五种通知形式 实现 如何写切面类 具体举例 理论 AOP 灵魂三问 1 AOP是什么 AOP中文叫做面向切面编程 为Aspect Orien
  • Spring Boot入门&整合常用框架整理丨深度好文

    一 SpringBoot简介 1 1 原有Spring优缺点分析 1 1 1 Spring的优点分析 Spring是Java企业版 Java Enterprise Edition JEE 也称J2EE 的轻量级代替品 无需开发重量级的Ent
  • Altium Designer导出STEP文件

    Tips 由于我使用的是13版本 没有高版本具有的STEP导出功能 故采用以下方式导出PCB 此种方式对元器件模型支持较差 对模型要求较高的同学 建议还是升级DXP版本 首先在PCB文件中 点击 工具 遗留工具 3D显示 在弹出的PCB3D
  • 空谱结合多标准的主动学习用于高光谱分类

    摘要 阶段1首先使用PCA降维 然后使用形态学的腐蚀膨胀方法获取一系列图像 阶段2引入了一种新的基于uncertainty diversity和聚类假设的query function 使用主动学习 介绍 降维解决了维度灾难的问题 解决样本数
  • MySQL存储引擎MyISAM和InnoDB

    1 MySQL的程序结构 2 数据库逻辑结构 1 库 属性 名称 2 表 字段 名称 属性 数据类型 约束 记录 完整的数据 3 关系 库 表 记录 记录 字段 3 物理结构 1 库 操作系统下的目录 2 表 多个文件组成 Myisam表
  • java与redis连接过程中遇到问题

    java与redis连接过程中遇到问题 文章目录 java与redis连接过程中遇到问题 前言 一 redis是什么 特征 二 命令 1 redis通用命令 String类型常见命令 Hash常用命令 List常见命令 Set常见命令 三
  • Vuejs(一):Vuejs模板语法

    Vuejs模板语法 一 vuejs介绍 二 修改webstorm为2个空格 三 插值操作 3 1 v once 3 2 v html 3 3 v pre 3 4 v cloak 四 绑定属性 v bind 4 1 v bind绑定class
  • 计算机提示由于找不到VCRUNTIME140.dll,无法继续执行代码,重新安装程序可能会解决

    vcruntime140 dll文件是一个动态链接库 是Windows操作系统中非常重要的一个动态链接库文件 用于支持使用Microsoft Visual C 编译器创建的应用程序的运行 当我们运行的软件是有C 编译器创建的程序 就需要到系
  • DHCP原理与配置+DHCP中继

    一 DHCP服务的简介 DHCP基于客户 服务器模式 当DHCP客户端启动时 它会自动与DHCP服务器通信 由DHCP服务器为DHCP客户端提供自动分配IP地址的服务 安装了DHCP服务软件的服务器称为DHCP服务器 而启用了DHCP功能的
  • 安装visual studio 2013【转】

    本文转载自 http blog csdn net tina ttl article details 51544733 1下载 visual studio ultimate 2013安装包 微软已经向MSDN订阅用户提供了Visual Stu
  • IDEA 通过svn 导入项目

    SVN 点击菜单 VCS gt Checkout from Version Controll gt Subversion
  • 嵌入式经典面试题

    文章目录 一 常见面试题 1 用预处理指令 define 声明一个常数 用以表明1年中有多少秒 忽略闰年问题 2 写一个 标准 宏MIN 这个宏输入两个参数并返回较小的一个 3 预处理器标识 error的目的是什么 4 数据声明 5 sta
  • 01 用栈实现队列(leecode 232)

    1 问题 请你仅使用两个栈实现先入先出队列 队列应当支持一般队列的支持的所有操作 push pop peek empty 实现 MyQueue 类 void push int x 将元素 x 推到队列的末尾 int pop 从队列的开头移除
  • Web_for_Pentester_I之XML attacks

    Web for Pentester是国外安全研究者开发的一款渗透测试平台 由PentesterLab出品 官方给自己的定义是一个简单又十分有效地学习渗透测试的演练平台 XML attacks通常都是通过使用XPATH来恢复XML文件的解析设
  • 搭建以图搜图检索系统

    引言 当您听到 以图搜图 时 是否首先想到了百度 Google 等搜索引擎的以图搜图功能呢 事实上 您完全可以搭建一个属于自己的以图搜图系统 自己建立图片库 自己选择一张图片到库中进行搜索 并得到与其相似的若干图片 Milvus 作为一款针
  • #import与#include、@class有什么区别?

    import与 include class有什么区别 import与 include都是用来引入头文件的 与 include相比 Objective C中 import的优势是不会重复引入头文件 相当于多了C C 中 pragma once