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

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

一. #include

1. 在C语言中,我们使用#include来引入头文件。使用#include “xx.h”来引入自定义的头文件,使用#include来引入库中的头文件。

2. #include不是不能防止重复引用头文件,而是操作起来比较复杂。

3. #include:为了防止重复引用可采用:

#ifndef  ViewController_h

#define ViewController_h

#endif

二. #import

1. #import是#include的升级版,可以防止重复引入头文件这种现象的发生。

2. #import在引入头的时候,就是完全将头文件拷贝到现在的文件中。所以也有效率上的问题。

3. #import最大的问题在于,需要避免出现头文件递归引入的现象。(如:A引入B,B引入A,那么A、B的头文件会互相不停的拷贝)

三. @class

1. @class用来告诉编译器,有这样一个类,使书写代码时,不报错。 但是@class只是使导入的类名在引用时不受影响,不能创建该类的对象,因为创建对象时也需要访问其内部方法。

2. 因为#import引入头文件有效率问题,所以,当还没有调用类中方法,仅仅是定义类变量的时候,使用@class来提醒编译器。而在真正需要调用类方法的时候,进行#import。

3. 如果A是B的父类,那么这是在B.h中就必须要使用#import来引入A的头,因为需要知道A类中有哪些变量和方法,以免B类中重复定义。  

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,156评论 19 139
  • #import与#include的区别 #import比起#include的好处就是不会引起交叉编译 for ex...
    myjourney阅读 365评论 0 0
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 5,084评论 0 13
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,805评论 18 399
  • 这是一个时代与另一个时代的对抗,然而你必须得承认,时代始终是走在前进的路上,那赶不上时代的终归抛弃,那妄图用旧日的...
    采臣Allen阅读 1,932评论 0 0