美文网首页
#import,#include与@class的区别

#import,#include与@class的区别

作者: Helen_kay | 来源:发表于2018-03-12 15:33 被阅读0次

1.#include

#include是C中用来引用文件的关键字,而#import是obj-c中用来代替include的关键字。
#import可以确保同一个文件只能被导入一次,从而避免了使用#include容易引起的重复引用问题,即classA引用了classC,classB也引用了classC,而当classD同时引用classA,classB的时候就会报重复引用的错误。

2.#import""与#import<>

#import""实现从当前工作目录中找要导入的文件,如果没有再到系统类库中找,而#import<>是直接从系统类库中找要导入的文件。

3.#import与@class:

@class只是告诉编译器,后面遇到的这个名称是一个类名称,至于这个类是如何实现的暂不用考虑。

引入@class主要是用来解决引用死锁--如果两个类存在循环依赖关系,即A->B,B->A,如果用#import来相互包含,就会出现编译错误:

Expected specifier-qualifier-list before ‘A’或者Expected specifier-qualifier-list before ‘B’。

一般情况下,在 .h文件中,只需要知道类的名字就可以了,所以用@class,而在 .m文件中通常需要知道类的成员变量即方法,所以要用#import来将类文件导进来。

那为什么不在 .h文件中直接用#import来将类文件导入呢,因为如果导入大量的头文件,编译器就会花大量的时间来编译。

需要在 .h文件中用#import的情况:

  1. 如果有继承关系的要用#import,如,A继承B,需要在A中将B import进来。
  2. /使用有category的类,需要在 .h文件中用#import将该类的category导进来。

相关文章

  • 基础面试题

    1,#import和#include区别 #import和@class的区别 #import<>和#import"...

  • OC基础

    1.#import、#include、@class、#import<>和#import""的区别?import 是...

  • iOS-题总结-1

    #import 跟#include、@class有什么区别?#import<> 跟 #import""又什么区别?...

  • 1:#import和#include有什么区别,@class,#

    1:#import和#include有什么区别,@class,#import<>跟#import" "有什么区别?...

  • iOS面试-1

    #import和#include有什么区别?@class呢?#import<>和#import""有什么区别? #...

  • iOS (持续更新)

    1、#import 跟 #include 有什么区别,@class呢,#import<> 跟 #import"" ...

  • iOS笔试题---001

    1.#import和#include的区别以及 @class 相关作用? import和#include都能完整地...

  • #import和#include,@class的区别

    #import和#include有什么区别,@class,#import<>跟#import" "有什么区别? i...

  • iOS笔试题

    1.#import跟#include、@class有什么区别?#import<>跟#import”"又什么区别? ...

  • iOS一些经典面试题

    1.#import跟#include、@class有什么区别?#import<>跟#import”"又什么区别? ...

网友评论

      本文标题:#import,#include与@class的区别

      本文链接:https://www.haomeiwen.com/subject/blwnfftx.html