美文网首页
iOS中#import、#include、@class的区别

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

作者: Aexsi | 来源:发表于2020-06-11 18:04 被阅读0次

首先了解一下#include是干什么的

    #include 是C语言的预处理指令之一,所谓预处理,就是在编译之前做的处理,预处理指令一般以 # 开头   

    #include 指令后面会跟着一个文件名,预处理器发现 #include 指令后,就会根据文件名去查找文件,并把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源文件中的 #include 指令,就像你把被包含文件中的全部内容拷贝到这个 #include 指令所在的位置一样。所以第一行指令的作用是将stdio.h文件里面的所有内容拷贝到第一行中

    如果被包含的文件拓展名为.h,我们称之为"头文件"(Header File),头文件可以用来声明函数,要想使用这些函数,就必须先用 #include 指令包含函数所在的头文件

    #include 指令不仅仅限于.h头文件,可以包含任何编译器能识别的C/C++代码文件,包括.c、.hpp、.cpp等,甚至.txt、.abc等等都可以

(以上内容摘自GSChan的文章:iOS中#import和#include区别


    现在我们知道了#include是C语言的一个预处理指令,用于把一个文件包含在当前文件中,简单的理解就是用目标文件中的所有文本替换#include这一行,相当于直接CtrlA+CtrlC+CtrlV。(ACV大法好)

    而OC作为基于C开发的语言,当然也具#import这一指令,而且,他还有一个优化版的预处理指令:#import。#import与#include的主要区别就在于:

       #import可以保证引用的头文件只引用一次,因此可以避免引发交叉编译的问题。

    至于为什么可以实现这样,主要是因为#import内置了条件编译:

#ifndef X      //如果没有编译X

#include X   //编译X

#endif         //结束条件编译

    其实条件指示符#ifndef在C语言的阶段就被大量使用,最主要目的就是防止头文件的重复包含和编译。

#import和@class的区别:

    #import会包含这个类的所有信息,包括实体变量和方法(.h文件中),而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,则无可奉告。这样做的好处是当我们在.h文件中声明类时,一般不需要实现这个类中具体的方法,因此使用@class可以大大提升编译效率。

相关文章

  • 2019--iOS 面试集锦

    一、iOS基础 1、#import、#include、@class有什么区别,#import<>和#import“...

  • iOS中#include、#import 、@class区别

    include和#import 其效果相同,都是导入类中定义的行为(方法); import 不会引起交叉编译,确保...

  • iOS笔试题01

    《2018 iOS面试题系列》 1. #import 跟 #include、@class有什么区别?#import...

  • iOS中#import、#include、@class的区别

    首先了解一下#include是干什么的 #include 是C语言的预处理指令之一,所谓预处理,就是在编译之前...

  • 基础面试题

    1,#import和#include区别 #import和@class的区别 #import<>和#import"...

  • 2019-01-12

    iOS面试题及答案 #import跟 #include 有什么区别,@class呢,#import<> 跟 #im...

  • iOS | 面试基础整理

    iOS | 面试知识整理 - OC基础 (一) 1. #include、#import、@class的区别? 在C...

  • OC基础

    1.#import、#include、@class、#import<>和#import""的区别?import 是...

  • iOS进阶基础

    iOS常用的设计模式有哪些?MVC和MVVM的区别? import和@include和区别?@class有什么作用...

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

    在OC中,引用文件可以通过#include、#import、@class三种方式。 一. #include 1. ...

网友评论

      本文标题:iOS中#import、#include、@class的区别

      本文链接:https://www.haomeiwen.com/subject/qgdjahtx.html