iOS @class与#import的区别

实测有效!易灵思FPGA工程如何正确配置Efinity+Modelsim仿真环境 本文详细介绍了易灵思FPGA工程中如何高效配置Efinity与Modelsim联合仿真环境,包括软件版本匹配、系统环境变量设置、工程文件结构优化及仿真脚本深度优化等实战经验。通过实测数据验证,该方案可显著提升仿真效率,适用于不同规模的设计验证,帮助工程师快速搭建稳定高效的联仿环境。 阅读详情

1.@class基本概念

作用  可以简单地引用一个类

简单使用  @class Dog;

仅仅是告诉编译器:Dog是一个类;并不会包含Dog这个类的所有内容

具体使用 

在.h文件中使用@class引用一个类

在.m文件中使用#import包含这个类的.h文件

2.@class其它应用场景

对于循环依赖关系来说,比方A类引用B类,同时B类也引用A类

这种嵌套包含的代码编译会报错

当使用@class在两个类相互声明,就不会出现编译报错


3.@class和#import

作用上的区别

import会包含引用类的所有信息(内容),包括引用类的变量和方法

@class仅仅是告诉编译器有这么一个类, 具体这个类里有什么信息, 完全不知

效率上的区别

如果有上百个头文件都#import了同一个文件,或者这些文件依次被#import,那么一旦最开始的头文件稍有改动,后面引用到这个文件的所有类都需要重新编译一遍 , 编译效率非常低

相对来讲,使用@class方式就不会出现这种问题了


总结:

在Objective-C的项目中, @class通常放在.h文件中, 主要作用在于提升编译性能, 且能防止头文件的递归import.

通常, 使用#import引入一个类的头文件, 编译时会将该类的头文件中的所有信息都引入, 包含属性和方法, 但有时候却不需要这么多, 且包含这些信息会降低编译性能. 
而@class就表示这只是一个类而已, 我们所关心的仅此一点, 而不需要知道该类的内部有哪些属性和方法. 这种情况下, 我们在.h头文件中就可以仅仅使用@class, 以提升编译性能. 而在.m实现文件中, 往往就需要知道类的内部信息了, 这时就需使用#import来引入这些信息.


实战Nocobase插件开发:如何用yarn pm命令快速创建和测试API接口插件 本文详细介绍了如何使用Nocobase插件开发工具快速创建和测试API接口插件,涵盖从环境配置、插件骨架生成到数据模型定义和接口实现的完整流程。通过yarn pm命令简化开发步骤,帮助开发者高效构建支持CRUD的API插件,适用于低代码平台开发场景。 阅读详情

相关推荐

tcmalloc(高并发内存池)简化版讲解-项目

高清发不上去,私我发高清,项目完整代码@我。

2201_75352618的博客 910

objective-C 中使用@Class和 #import区别

objective-c中,当一个类使用到另一个类时,并且在类的头文件中需要创建被引用的指针时,   如下面代码:   A.h文件 #import "B.h" @interface A : NSObject { B *b; } @end   为了简单起见:A类是引用类,B类是被引用类,这里先不考虑A类的实现文件。   通常引用一个类有两种办法:      ...

Just Code 364

MTK metadata中AF模块的移除与配置调整

本文详细介绍了在MTK平台Camera开发中如何移除metadata中的AF(自动对焦)模块。通过系统清理MTK_CONTROL_AF_REGIONS、MTK_CONTROL_MAX_REGIONS等关键配置项,并调整对焦模式及硬件特性声明,确保定制化设备在禁用自动对焦功能后的稳定运行。

q1w3e5r7t9y的博客 570

iOS @class

@class 作用:可以简单地引用一个类(提高编译器性能) 简单实用 @class Dog 仅仅是告诉编译器:Dog是一个类; 并不会拷贝Dog这个类的内容 注意 由于@class仅仅告诉编译器这是一个类,编译器不知道这个类中的属性和方法,所以在.m中使用这个类时需要#import这个类才能使用. 具体实用 在.h文件中实用@class引用一个类 在.m文件中使用

aaa1961659的博客 722

嘉立创EDA vs Altium Designer:新手如何选择?从界面到实战全对比

本文全面对比了嘉立创EDA与Altium Designer(AD)两大PCB设计工具,从设计哲学、界面交互、封装库管理、设计规则引擎、协作功能到成本生态六大维度进行深入分析。嘉立创EDA以极简设计和云端协作为特色,适合学生和创客快速上手;而AD则凭借专业级精准控制,成为高端电子设计的行业标准。通过实战案例和详细对比表格,帮助新手根据项目需求选择合适的EDA工具。

weixin_30296405的博客 720

基于电子海图的水面无人艇全局路径规划

Research and Implementation of Global Path Planning for Unmanned Surface Vehicle Based on Electronic Chart (基于电子海图的水面无人艇全局路径规划)   该论文已经在ICMIR2017会议上发表,附上springer的文献地址 Research and Implementation of Gl...

weixin_30797199的博客 1590

iOS中的@class

1.import会包含这个类的所有信息,包括实体变量和方法;而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你; 2.在头文件中,一般只需要知道被引用的类的名称就可以了。不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使

songecit的专栏 694

从零开始:IBM V3700控制器更换与机器代码升级全流程指南

本文详细介绍了IBM V3700存储系统控制器更换与机器代码升级的全流程指南。从前期准备、硬件更换到版本同步,逐步解析如何应对503错误等常见问题,确保系统稳定运行。通过实战案例和优化建议,帮助工程师高效完成维护任务,提升存储系统可用性。

weixin_28365523的博客 312

iOS开发-@class的作用

@class,该指令的作用是告诉编辑器,某处代码定义了一个名为A的类。当某个文件只需要使用A类的声明,不需要向A类或A类的对象发送消息时,就可以使用该指令,使用该指令以后,就不需要导入 A.h 了。当A类的头文件发生变化的时候,对那些通过@class指令声明A类的其他文件,编译器就可以不用重新编译了,这样就可以大幅节省编译时间

SeaState的博客 1595

【新版系统架构】系统架构设计师教程全篇知识点提炼

信息系统的5个基本功能:输入、存储、处理、输出和控制信息系统的发展:诺兰模型:初始阶段、传播阶段、控制阶段、集成阶段、数据管理阶段、成熟阶段信息系统的分类:传统的信息系统分为:业务(数据)处理系统、管理信息系统(MIS)、决策支持系统(DSS)、专家系统(ES)、办公自动化系统(OAS)等5类信息系统的生命周期:1、产生阶段2、开发阶段(总体规划、系统分析、系统设计、系统实施、系统验收阶段)3、运行阶段4、消亡阶段信息系统建设原则:1、高层管理人员介入原则。

分享技术干货和灵感、推荐新书和好玩的项目、分享Java面试题 1万+

Openclaw第5章 知识库管理

💡:学会使用 OpenClaw构建个人知识库系统,实现网页文章存档、GitHub项目管理、论文笔记整理和跨设备同步。

Maynor的博客 775

iOS - @class剖析

1@class 定义: 就相当于 只是声明一个类,但是这个类是私有的  可以被实例化 但是不能访问其内部方法。 2.在项目中声明@class 就是为了声明一个当前项目已经存在的类(注意:必须是当前项目已存在的类才可以使用@class创建),但是这个类只是声明被当做一个“类”来看待 不具有任何别的意义。 3、使用@class 比较import 可以在给程序编译时 节约资源 提高代码效率  不会多

forever_ljx的博客 288

[漏洞挖掘与防护] 03.漏洞利用之WinRAR安全缺陷复现(CVE-2018-20250)及软件自启动分析

上一篇文章将详细介绍MS08-067远程代码执行漏洞(CVE-2008-4250)及防御过程,它是Windows Server服务RPC请求缓冲区溢出漏洞,利用445端口,并通过Metasploit工具获取shell及进行深入的操作。这篇文章将详细讲解WinRAR漏洞(CVE-2018-20250),并复现了该漏洞和讲解了恶意软件自启动劫持原理。基础性文章,希望对入门的同学有帮助。

杨秀璋的专栏 1088

ios中@class和 #import区别

很多刚开始学习iOS开发的同学可能在看别人的代码的时候会发现有部分#import操作写在m文件中,而h文件仅仅使用@class进行声明,不禁纳闷起来,为什么不直接把#import放到h文件中呢?这是因为h文件在修改后,所有import该h文件的所有文件必须重 新build,因此,如果把#import写在h文件中,import该h文件的文件也就会产生不必要的编译,增加编译时间,特别是在项目文件多的情...

weixin_30701521的博客 67

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

iOS学习——@class和#import、#include的区别

  在iOS开发过程中,我们在一些源码中经常会看到导包的时候有的用#import进行导包,但是有的的时候也会看到用@class进行导包,那么这两种方式有什么区别呢? 一 @class和#import的主要区别   首先说一下最主要的区别: 使用#import引入一个类的头文件,编译时会将该类的头文件中的所有信息都引入,包含属性和方法; 使用@class仅仅是告诉编译器这是一个...

weixin_30832405的博客 124

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

iOS 中 #import 和 @class 的区别

1.#import 会包含这个类的所有信息,包括实体变量和方法,而 @class 只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。 2.在头文件(.h 文件)中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用 @class 来声明这个名称是类的名称。 而在实现类(.m 文件)里面,因...

dianfeiil764936的博客 194

iOS 开发之#Import #include @class区别

这个我在之前有说过,这次再详细说一下 #import与#include区别: 1,一般来说,导入objective-C头文件时用#import, 包含c/c++头文件时用#import 2.#import确保一个头文件只能被导入一次,这使你在地柜包涵中不会出现问题,所以 #import比起#include的好处是不会引起交叉编译 #import与@class区别: 1.#Import会包

学如逆水行舟 1236

iOS开发心得体会——#import、#include和@class的区别

IOS开发之----#import、#include和@class的区别 转自:http://blog.sina.com.cn/s/blog_71715bf80101a8t8.html 1. 一般来说,导入objective c的头文件时用#import,包含c/c++头文件时用#include。2. #import 确定一个文件只能被导入一次,这使你在递归包含中不会出现问题。&l...

weixin_30895603的博客 89

iOS #include与#import的区别、#import与@class 的区别

#include和#import 其效果相同,都是导入类中定义的行为(方法); #import 不会引起交叉编译,确保头文件只会被导入一次; @class 表明只定义了类的名称,而具体类的行为是未知的,一般用于.h 文件 @class比#import编译效率更高。此外@class和#import的主要区别在于解决引用死锁的问题。 ...

春风酿酒的博客 488

iOS 中 #import同@class之间的区别

很多刚开始学习iOS开发的同学可能在看别人的代码的时候会发现有部分#import操作写在m文件中,而h文件仅仅使用@class进行声明,不禁纳闷起来,为什么不直接把#import放到h文件中呢? 这是因为h文件在修改后,所有import该h文件的所有文件必须重 新build,因此,如果把#import写在h文件中,import该h文件的文件也就会产生不必要的编译,增加编译时间,特别是在项目文件多...

weixin_30679823的博客 78

ios中#import与@class的区别

#import是将指定的类的文件的内容拷贝到写指令的地方 @class并不会拷贝批定的类的任何内容,只是告诉编译器,这是一个类,这样编译器在编译的时候,才可以知道这是一个类。

fivecents的博客 418

iOS 开发 #import #include @class 的区别

前几天  遇到这样的 bug

u012479911的专栏 1572

iOS中#import和@class的区别

1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。 2.在头文件中, 一般只需要知道被引用的类的名称就可以了。不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以

我爱编程持之以恒 587

IOS-#import与@class的区别

#import与@class的区别 1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。 2.在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会

梦从这里启航,代码改变世界 623

iOS #import、#include、@class、#import<> 、#import""的区别

1、#import指令是Object-C针对#include的改进版本。   2、@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import;       #import会链入该头文件的全部信息,包括实体变量和方法等;而@class只是告诉编译器,其后面声明的名称是类的名称。   3、#import"  " 是自己创建的文件;#import&l...

Kuroko's Development Notes 822
上一篇: iOS编译过程的原理和应用
下一篇: iOS之Runtime的理解和使用
xinxu-dev
博客等级 码龄12年 16粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值