美文网首页C/C++
#include #import的区别 <filen

#include #import的区别 <filen

作者: 片片碎 | 来源:发表于2018-05-19 23:14 被阅读2次

    1. #include #import的区别   

    a)#import指令是Object-C针对#include的改进版本

    b) #import确保引用的文件只会被引用一次,这样就不会陷入递归包含的问题中

    c) 一般来说,在导入 Objective-C 头文件的时候使用 #import,包含 C 头文件时使用 #include

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

    2.   ”filename”区别

     直接在库文件目录中搜索所包含的文件 (直接去系统库搜索)

    ”filename”在当前目录下搜索所包含的文件,如果没有的话再到库文件目录搜索 (即先在用户目录搜索,找不到再去系统库搜索)

    3、@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;

    相关文章

      网友评论

        本文标题:#include #import的区别 <filen

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