• #import 跟 #include、@class 之间的区别


    #include 是 C/C++ 导入头文件的关键字  是完整的包含某个文件的内容(包括该文件中被导入的文件)

    #import 是 OC 导入头文件的关键字    

      #import 指令是 OC 针对 #include 的改进版本,使用#import ,能确保引用的文件只会被引用一次,不会出现递归包含的问题

      #import<> 代表导入 系统自带的框架

      #import"" 代表导入我们自己创建的类,导入的是我们的 .h文件,也就是头文件

      #import 会链入该头文件的全部信息,包括 实例变量和 方法 等。

    @class 的作用: 告诉编译器,我后面跟着的字符串是 类的名称,其余的你不用管!所以用@class的类内部的 实例变量和方法 都不能访问!

    编译效率方面区别:@class 在某些情况下编译效率高于 #import

        如:你有100个头文件都#import了同一个头文件;或者这些文件是依次引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有  引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。

        但是用@class则不会。

    编译错误方面:

         如:如果有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,

      如果使用#import来相互包含,那么就会出现编译错误,

      如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现

    重复引用方面:#import 可以使用不会出错,#include 不可以避免错误 #include 会有重复引用的错误

        如:A 类导入了 C 类的头文件,B 类也导入了 C 类的头文件,D 类又同时导入 A 和 B 类,这就是重复导入  #import则不会有重复引用的问题

     

     
  • 相关阅读:
    好久没来园子里转了,最近在学ssh,有个小问题提出来
    ClearType使用的问题
    Metro中访问特定设备的方法
    UMDF驱动程序快速上手
    关于GPS使用上的一个怪异问题
    一个不能创建WINCE6.0工程的问题
    Metro开发小记
    在WINPE中添加驱动
    DOS命令活用
    METRO开发中的多语言处理
  • 原文地址:https://www.cnblogs.com/chenbowen/p/6020137.html
Copyright © 2020-2023  润新知