编写高质量iOS代码(二)

在类的头文件里面尽量少引入其他头文件###

这个问题是初学者特别容易犯的问题,有时候需要在Family类头文件里面添加一个Father类属性,会将Father类的头文件导入Family类的头文件里面。


编写高质量iOS代码(二)_第1张图片
Snip20170514_2.png

这样写不优雅,因为在导入Family头文件的同时将Family类的所有内容都引用过去了,而我们只需要知道有个类名叫 Father就好。那么我门就可以用@class“前向声明”就好。

编写高质量iOS代码(二)_第2张图片
Snip20170514_1.png

应该将引入头文件的时机尽量延后,只在需要的时候才引入,这样可以减少类使用者所需要引入头文件的数量。而且前向声明也解决了两个类的循环引用问题。

协议最好单独放在一个头文件中

如果声明你写的类遵循某个协议(protocol),那么该协议需要有完整定义,且不能使用前向声明。最好把协议单独放在头文件中,如果放在某个复杂的类头文件里,就会引入那个类的所有内容,这样会产生相互依赖,并且增加编译时间。

该类如果有委托协议(delegate protocol)最好把委托协议实现代码写在该类的分类里

委托协议就不需要单独写在头文件里面,这种情况,协议只有与接受协议的类放在一起定义才有意义。但最好在.m文件里面声明实现了该委托协议,并把这段代码写在该类的分类里。这样可以减少编译时间,还可以降低依赖程度。

总结要点:

  1. 除非有必要,否则不要在头文件里引入另一个头文件,尽量使用前向声明,在.m文件引入那些需要的头文件。这样可以减少编译时间,防止两个类循环引用,还可以降低类之间的耦合。
  2. 使用协议时,将协议单独放在头文件。使用委托协议,尽量为该类创建分类,将实现代码放置分类里面。

你可能感兴趣的:(编写高质量iOS代码(二))