黑龙江网站建设费用,桂林象鼻山属于哪个区,wordpress 加轮播图,百度seo推广怎么做解析#xff1a; 很多刚开始学习iOS开发的同学可能在看别人的代码的时候会发现有部分#import操作写在 .m 文件中#xff0c;而 .h 文件仅仅使用class进行声明#xff0c;不禁纳闷起来#xff0c;为什么不直接把#import放到h文件中呢#xff1f; 这是因为 .h 文件在修改后 很多刚开始学习iOS开发的同学可能在看别人的代码的时候会发现有部分#import操作写在 .m 文件中而 .h 文件仅仅使用class进行声明不禁纳闷起来为什么不直接把#import放到h文件中呢 这是因为 .h 文件在修改后所有 #import 该 .h 文件的所有文件必须重 新Build因此如果把 #import 写在 .h 文件中#impor t该 .h 文件的文件也就会产生不必要的编译增加编译时间特别是在项目文件多的情况 下。想象一下如果只是修改一个 .h 文件而导致上百个文件不必要的编译那是一件多么让人纠结的事情。。。对于class只是告诉编译器有这个class请不要报错或警告因此不会给编译造成影响。 下面来说一下#import同class之间的区别 在ios中我们经常会在.h和.m中引入一些类啊等等一般用的是#import来进行声明你们可能也见到在.h文件进用class来声明的那么#import和class进行声明 到底有什么的区别呢 1. import会包含这个类的所有信息包括实体变量和方法而class只告诉编译器声明的类的名称至于这些类是如何定义的暂时不用考虑所以在头文件中如果用class声明某个类后在.m的实现中如果用到声明类的具体方法或变量时还得再#import类 。 2.在.h头文件中进行声明时用#import的话如果100个头文件都#import同一个头件或者这些文件是依次引用的如A-B,B-C,C-D,当最开始的那个头文件有变化后进行编译时后面所有引用它的类都需要重新编译如果引用最开始的头文件的类很多的话那么这将耗费大量的时间而用class则不会可能有人会想即然.h只是用class只是简单的一个声明告编译器有这个类不让其报错那么.m中要用到引入的类的方法和属性时不还是要#import头文件一次是的这个是对的但编译器编译的时候只编译头文件的所以你的.m中用#import与编译时间没太大关系 接下来说说什么时候该用class什么时候该用#import进行声明 1.一般如果有继承关系的用#import如是的子类那么在中声明时用#import 2. 另外就是如果有循环依赖关系如A-B,B-A这样相互依赖时如果在两个文件的头文件中用#import分别声明对方那么就会出现头文件循环利用的错误这时在头文件中用class声明就不会出错 3.还有就是自定义代理的时候如果在头文件中想声明代理的话如interface SecondViewController:UIViewController时应用#import不然的话会出错误注意Delegate是自定义的 在分析 #Imclude 和 #include的用法 #include 区分 #include x.h与#include x.h的作用 #include x.h:它用于对系统自带的头文件的引用编译器会在系统文件目录下去查找该文件. #include x.h:用户自定义的文件用双引号引用编译器首先会在用户目录下查找然后到安装目录中查找最后在系统文件中查找。 在使用#include的时候要注意处理重复引用这也是objc中#include与#import的区别 例如ClassA 与 ClassB同时引用了ClassC不做重复引用处理的时候在ClassD中同时引用ClassAClassB编译会提示对ClassC重复引用的错误. 我们可以:#ifndef _CLASSC_H #define _CLASSC_H #include ClassC #endif 这样处理在编译时就不会有重复引用的错误出现在objc中#import解决了这个问题这是它们的区别#import #import 大部分功能和#include是一样的但是他处理了重复引用的问题我们在引用文件的时候不用再去自己进行重复引用处理.class 主要是用于声明一个类告诉编译器它后面的名字是一个类的名字而这个类的定义实现是暂时不用知道的后面会告诉你.也是因为在class仅仅只是声明一个类所以在后面的实现文件里面是需要去#import这个类这时候才包含了这个被引用的类的所有信息。综上所述#include#import与class的区别可以做一下理解 #include与#import在引用一个类的时候会包含这个类的所有信息包括变量方法等但是这样做会对编译效率造成影响.比如有99个类都#import了ClassA那么在编译的时候这99个类都会去对ClassA处理.又比如A被B引用B被C引用C被D引用.....此时如果A被修改那么后面的BCD.....都需要重新进行编译.还有一个用法会引起编译错误的就是在ClassA中#import ClassB 在ClassB中#import ClassA那么在编译的时候也会出现未知错误。 所以一般来说在interface中引用一个类就用class它会把这个类作为一个类型来使用而在实现这个interface的文件中如果需要引用这个类的实体变量或者方法之类的还是需要import这个在class中声明的类。转载于:https://www.cnblogs.com/Sucri/p/5262215.html