Object-c 语法 - 头文件引用(@class/#import/#include)

一、 Objective-C 中 #import 和 #include 的区别

预编译指令
  Objective-C:#import:由gcc编译器支持

  C,C++:#include

在 Objective-C 中,#import 被当成 #include 指令的改良版本来使用。除此之外,#import 确定一个文件只能被导入一次,这使你在递归包含中不会出现问题。

使用哪一个还是由你来决定。一般来说,在导入 Objective-C 头文件的时候使用 #import,包含 C 头文件时使用 #include。

#import比起#include的好处就是不会引起交叉编译

二、@class是用来做类引用的

@class就是告诉编译器有这么一个类,至于类的定义是啥不知道
@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import

举个例子说明:
在ClassA.h中
#import ClassB.h 相当于#include整个.h头文件。如果有很多.m文件#import ClassA.h,那么编译的时候这 些文件也会#import ClassB.h增加了没必要的#import,浪费编译时间。在大型软件中,减少.h文件中的include 是非常重要的。

如果只是@class ClassB 那就没有include ClassB.h。仅需要在需要用到ClassB的ClassA.m文件中 #import ClassB.h

那么什么时候可以用@class呢?如果ClassA.h中仅需要声明一个ClassB的指针,那么就可以在ClassA.h中声明
@ClassB
...
ClassB *pointer;

时间: 2024-11-07 07:38:59

Object-c 语法 - 头文件引用(@class/#import/#include)的相关文章

C语言头文件引用

1,引用分为两种 firs:include<fileName.h> 引用系统头文件一般用<>. second:include"fileName.h" 引用自己定义的头文件一般用" ". 区别是<>首先去系统中去找," "则在自己当前文件夹找. 2,只引用一次头文件 如果一个头文件被引用两次,编译器会处理两次头文件的内容,这将产生错误.为了防止这种情况,标准的做法是把文件的整个内容放在条件编译语句中,如下: _t

vscode中c/c++头文件引用找不到飘红

正在进行 GTK 学习, 但是在 vscode GTK 的头文件找不到(头文件引用底下飘红, 逼死强迫症), 影响敲字键入速度. 解决一下该问题-- vscode中c/c++头文件引用找不到(#include errors detected) 花了我几十分钟, 可以说相当智障了... 在 c_cpp_properties.json(就是c/c++的配置文件)里面添加 "includePath": 开始提示 glib.h 找不到, 我加上了 "/usr/include/glib

iOS全局头文件引用报一些系统库出错

#ifdef __OBJC__ #import "UIButton+Block.h" #endif // 加入这两句在中间引入头文件

C++ 头文件引用

1.首先明确C++如何编译 C++编译所有的.cpp文件而不是.h文件,将.cpp文件编译成obj,再连接所有的obj 2.如果在cpp中include了.h文件,那么就不用在.h中再include了,或者提前声明(例如 class A),但是应该确保头文件的引用顺序是正确的. 3.两个问文件互相引用,可以把所有的include拿到.cpp文件中,然后在.h文件中提前声明(例如 class A)

C与C++的头文件引用

最好不要使用"string.h",stdint.h,iostream.h这样的头文件,这些都是C的头文件 习惯使用<string> <iostream>

#include&lt;stdio.h&gt;的头文件的查找 #import&lt;Foundation/NSObjCRuntime.h&gt;头文件的查找 在Xcode下查找-城

1.Foundation框架下的头文件在Xcode下的路径: NSObjCRuntime.h的路径:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework/Headers 2.include文件夹下的头文件在Xcode下的路径: include下的stdio.h的

smarty基本语法之文件引用,以及函数的使用

smarty的文件引用: {include file="head.tpl"} {include file="head.tpl"  sitename="博客园"}    属性sitename被传递到head.tpl,可在文件中调用{$sitename} smarty中函数的使用: 1.直接使用php函数: 形式:{变量 | php内置函数 : 参数2 : 参数3} date("Y-m-d", $time)   ---->

vs 添加 lib 以及 头文件引用

1. 添加编译所需要(依赖)的 lib 文件 [解决方案资源管理器]"项目->属性->配置属性->连接器->输入->附加依赖项"里填写"winsock.lib",多个 lib 以空格隔开.(等同于"#pragma comment(lib, "winsock.lib") "语句) 2. 添加库(Libs)文件目录 方法 1:[解决方案资源管理器]"项目->属性->配置属性-&g

引用头文件#include &lt;queue&gt;出错

在工程头文件中引用头文件 #include <queue> 莫名奇妙出错,其原因很可能是由于头文件引用问题. include/c++/4.7.1/bits/stl_vector.h:1308:40: error: expected unqualified-id before '(' token /lib/gcc/arm-linux-gnueabihf/4.7.1/../../../../arm-linux-gnueabihf/include/c++/4.7.1/vector:66:0,