#include,#import ,@class 有什么区别?

#include 和 #import 有相同的效果,只不过#import 能确保头文件只被导入一次,不会引起重复导入。#import能把头文件的所有信息都获取到,包含这个类的变量和方法。而@class只是会告诉编译器,其后声明的名称是类的名称,至于这些类是如何定义的却完全不知道,因此,即使你在头文件中使用了@class,还是需要在声明文件.m中导入头文件的。

注意:@class 的使用时为了防止头文件之间互相导入(交叉导入);

时间: 2024-10-09 14:27:29

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

#include #import @class 的一些用法区别

从网上查了一些资料,整理了一下,发现很多都说的比较详尽,下面摘录自网络 说一下#import同class之间的区别 在ios中我们经常会在.h和.m中引入一些类啊等等一般用的是#import来进行声明,你们可能也见到在.h文件进用@class来声明的,那么#import和@class进行声明 到底有什么的区别呢? 1. import会包含这个类的所有信息,包括实体变量和方法,而@class只告诉编译器,声明的类的名称,至于这些类是如何定义的,暂时不用考虑,所以在头文件中如果用@class声明某个

#import与@class的区别

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

objective-c中#import和@class的区别

在Objective-C中,可以使用#import和@class来引用别的类型, 但是你知道两者有什么区别吗? @class叫做forward-class,  你经常会在头文件的定义中看到通过@class的引用, 原因就是当你只用@class来引入一个类时, 编译器知道有这么一个类,也就是说它能识别Engine *engine; 而在implementation文件中,如果你想要访问engine.price, 编译器就会出错, 即使你用了@class引入了. 这时需要使用的其实是#import

@import和link的区别

@import和link的区别 1.link语法结构    <link href="CSSurl路径" rel="stylesheet" type="text/css" />    此标签是引入CSS文件link标签,只要设置好路径即可. 2.@import语法结构    @import + 空格+ url(CSS文件路径地址);    1).在html中        <style type="text/css&qu

PHP include()和require()方法的区别

本文总结了PHP的include()和require()两种包含外部文件的方法的不同之处.基本上就是,加载失败的处理方法,性能,以及使用弹性方面的不同. PHP的include()和require()是两种包含外部文件的方法,对于这两种方法有什么区别,很多初学者可能不是很明白.下面总结一下PHP include()和require()的区别: 1:加载失败的处理方式不同: include()会产生一个警告,而require()则导致一个致命的错误(出现错误,脚本停止执行) require() :

辛星与您彻底分析PHP中的include和require等的区别

首先说一下require吧,我们知道如果它引入的文件不存在,将会导致程序无法继续执行,因此它通常放在程序的最前面,通常是一些特别重要的部分,比如连接数据库库,比如加载配置文件,比如引用核心函数库等等. 然后说一下include把,它引入成功与否并不重要,因此它和html的特点很接近,可以用于程序的开头,当然很多时候我们是需要引用的时候才include进来,这样,它的位置也就更加随意一些,可以放在中间. 还有一个include_once,它的开销比include 大得多,为什么呢,因为它会检测该文

【测试题】C语言include引号和书名号的区别

C语言include引号和书名号的区别? 如果能正确回答下面这两个问题,应该是懂得的. -bash-3.2$ cat file puts("a"); -bash-3.2$ cat dir/file puts("b"); -bash-3.2$ cat dir/1.c int main() { #include "file" #include <file> } -bash-3.2$ gcc -I. dir/1.c -bash-3.2$ .

#import和@class的区别

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

&lt;%@page include%&gt;、&lt;%@include%&gt;、&lt;jsp:include&gt;三者之间的本质区别

<%@page include%>.<%@include%>.<jsp:include>三者之间的本质区别 先从它的几个内置对象说起. application和session比较简单,这里主要说明request和page的作用范围. application:全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享,生命周期为:应用程序启动到停止. session:会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态.生命周期:

js中import和require的区别

js中import和require的区别ES6标准发布后,module成为标准,标准使用是以export指令导出接口,以import引入模块.但是在我们一贯的node模块中,我们依然采用的是CommonJS规范,使用require引入模块,使用module.exports导出接口. require它相当于module.exports的传送门,module.exports后面的内容是什么,require的结果就是什么,对象.数字.字符串.函数……再把require的结果赋值给某个变量,相当于把re