#include #import @class三者究竟该用哪个

在OC中,引用文件可以通过#include、#import、@class三种方式,本文将讲解这三种方式的不同之处以及选择方式。

一. #include

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

2. 但是#include并不能防止重复引用头文件,如果在文件中,重复引用头文件,将会报错。(如:A引入了B,B引入了C,A再引入C,就会报错)

所以在OC中,几乎没有使用#incldue引头的情况。

二. #import

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

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

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

三. @class

1. @class用来告诉编译器,有这样一个类,使书写代码时,不报错。

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

(如:

现在需要在Student.h文件中定义一个Book类的变量book

那么不需要在Student.h中#import “Book.h”

而是在Student.h中@class Book 来是编译器不报错,告诉编译器我现在使用的Book是一个类,可以定义变量book

在之后的Student.m文件中,需要调用book方法时,在#import “Book.h”

从而降低#import在效率上的问题。)

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



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值