ios .h与.m问价的区别以及import的区别

2021-01-16 09:36:12

参考链接 #import “” (嵌入头文件) 在 .h 和 .m 文件中有什么区别?

.h是描述
.m是实现
一般来说 如果.h用到的类 就要在.h中import
如果.h中没用到的 .m中用到的 可以放在.m中import(也可.h中)

这个具体看编码规范
一般为了方便 .h中用到的 在.h中 引用
.m用的在.m中引用

我觉得最大的区别就是写在.m中可以有效减少交叉引用,你用心一点,会发现Fundition和UIKit框架中全部使用.m内引用,.h内用Class声明的方式,这样做对app运行时没有影响的,但是可以提高编译器预处理的速度,你的项目越大,这个影响就越明显。

所以xcode6开始默认模版去掉了从前的公共头文件.pch文件,就是为了提高编译速度。




有的程序员喜欢把所有import语句写在.h文件的头部。而有的程序员则喜欢把import语句写在.m文件头部。

你可能觉得写在哪里都无所谓。

那么,import语句写在.h文件和.m文件的哪一个都无所谓吗?

这并不是真的。

通常,我习惯在.h文件头部加入所有的import语句,但在有一种情况下,我只能把import语句加在.m文件里——这是为了避免交叉引用错误。

如果你不知道什么是交叉引用错误,那么这篇文章将会告诉你:关于一个交叉引用Bug:“can not find interface declaration” 

因此我建议你像我一样,平时可以将import语句都放在.h文件里,当编译器告诉你找不到某个类的声明但你明明已经导入了这个类的头文件时,把import语句移到.m文件头部。






  • 2020-02-19 23:15:24

    PHP 闭包(Closure)

    闭包(Closure)又叫做匿名函数,也就是没有定义名字的函数。比如下面的例子:

  • 2020-02-19 23:26:58

    php array_pop 删除数组最后一个元素实例

    php array_pop函数将数组最后一个单元弹出(出栈),即删除数组的最后一个元素。本文章通过php实例向大家讲解array_pop函数的使用方法。

  • 2020-02-20 18:35:21

    Vue加载组件、动态加载组件的几种方式

    组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。在较高层面上,组件是自定义的元素,Vue.js的编译器为它添加特殊功能。在有些情况下,组件也可以是原生HTML元素的形式,以is特性扩展。