#import,#include,@class

#import,#include,@class都可以引入头文件,但是三者有区别。

//b.h
#import "a.h"
@interface b:NSObject
@end

//a.h
#import "b.h"
@interface a:NSObject
@end

#import和#inclue都是引入头文件,但是当发生头头文件循环引用时,#include直接死循环,#import可以编译成功,但是会有其中一个时不编译不成功的。


为了避免这种情况,如果只是在头文件声明不需要体现具体实现的话,可以选择使用@class向前声明,这样可以减少引入头文件数量,同时也减少了头文件依赖关系的复杂度。如果在实现文件需要用到具体实现的话,在实现文件引入头文件,反正尽可能延迟。

//a.h
@class "b.h"
@interface a:NSObject
@end

//a.m
#import "b.h"
@implementation a
@end

其实这样写的目的很明确,万一还有类(暂时命名为c)需要导入a.h,a直接#import "b.h"会给这个c强行插入了b的编译,其实对c来说也许是不必要的。


所以总结如下:

#include在oc比较少用,#import尽量晚导入,@class在没有具体实现要求时可以用。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值