iOS头文件导入有啥姿势的?不就是#import "类名.h"
或者#import <类名.h>
,是这个理但是考虑过引入的头文件是放在.h还是.m文件了吗?如果只是让系统知道引用的是哪个对象的话否考虑过用@class
?
Question
1、如果都是用#import
导入是不是会出现循环引用的问题?
2、用#import
如何优化类与类之间的耦合度?
3、#import 类名
是放在.h还是.m中导入?
三个问题,在平时开发的时候是否考虑过?
解决
尽量使用@class
来代替#import头文件,因为@class
是向前声明,在使用的地方只是知道类型不会去预编译该类从而减少了预编译的时间,一两个区别不大但是在大工程中呢?
如果是用@class
向前声明该类,在.h文件中就无法声明成为属性以及遵循协议,这时候就需要考虑使用class-continuation分类
(也就是在.m文件中声明属性为私有并在.m文件中导入头文件)来实现。
在OC中,.h是为对外公开的那一些非对外公开的我们就可以放到.m文件中,无形之中也省掉了其余文件引用该文件时所需的预编译时间,一举两得。
总结
除非有必要,不然别随意引入头文件。其优点:减少预编译的时间,防止多个文件形成循环引用从而降低耦合度。
这只是在编写代码中的一个细节,但是是一个优化性能的有效方法,平时编码时值得我们关注,细节决定性能与体验。