在头文件中,当声明一个其他类的属性时,建议使用“向前声明”,在实现文件再引入这个类的头文件,因为实现文件必须知道这个类的所有接口细节。这样可以尽量降低类之间的耦合。
// 头文件中 向前声明
@class 类名
向前声明还解决了两个类互相引用的问题。
如果两个类在各自头文件引入对方的头文件,则会导致“循环引用”,这样虽然不会导致死循环,但两个类里会有一个类无法被正确编译。
必须在头文件引入其他头文件的情况:
1、编写的类继承自某个超类,则必须引入定义那个超类的头文件。
2、声明编写的类遵从某个协议,那么该协议必须有完整的定义,且不能使用向前声明。(向前声明只能告诉编译器有某个协议,而此时编译器要知道该协议中定义的方法,所以不能使用向前声明)。
第一种情况,无法避免,必须在头文件引入超类的头文件。
第二种情况,尽量把“该类遵循某协议”的这条声明移至“class-cntinuation分类”中,如果不行,就把协议单独放到一个头文件中,然后将其引入。(注意是:声明移到“class-cntinuation分类”中)。
网友评论