[OC学习笔记]头文件的引用

24 篇文章 1 订阅

在OC中,我们引用一个头文件,可以使用#import "SomeFile.h",也可以使用#import <SomeFile.h>,那么这两种方式有什么区别呢?
和在C/C++中一样,使用""引入的是本地工程的文件,而使用<>引入的是系统库的文件。

import""

在使用中,""会先查找用户目录下文件是否存在,或者说是User Header Search Paths,如果不存在,会继续查找库目录,也就是System Header Search Paths。

import<>

<>只会查找库目录(System Header Search Paths),如果查找失败,并不会继续查找用户目录。所以对于不熟练的用户,一般都推荐直接使用""
此外,在Xcode工程中使用cocoaPods引入的库,应该使用哪一种呢?答案是最好使用<>。因为使用cocoaPos导入的库,也算是系统引用库的一种,这种情况下虽然也可以使用"",但是基于区分来源的目的,建议还是使用<>

@class

使用@class仅仅是告诉编译器这是一个类,并不会因入该类的其他信息,而我们所关心的也仅此一点,而不需要知道该类的内部有哪些属性和方法,因此使用@class可以提升编译性能。一般情况下,我们在.h头文件中使用@class,可以以提升编译性能;而在.m实现文件中,往往就需要知道类的内部信息了,这时就需使用#import来引入这些信息。在iOS的很多源文件的.h文件中很多都采用@class的方式进行导包。
为了避免两个类之间循环引用,我们在某一个类的.h文件中用@class进行导入。例如:对于循环依赖关系来说,比方A类引用B类,同时B类也引用A类,这种情况,我们都用#import进行这种嵌套引用的代码在编译时是会报错。

#include

一般来说,导入OC的头文件时用#import,导入c/c++头文件用#include。include相当于拷贝文件中的声明内容,多次使用就会报重复定义的错误。如: classA,classB都引用了classC,而classD中又引用classA与classB,就会报重复引用的错误。#include它是使用预处理指令防止重复包含,如果没有写预处理指令,则无法防止重复包含问题。但是使用两次#import的话,不会报错,所以它可以解决重复导入的问题,它会做一次判断,如果已经导入一次就不导入了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值