Objective-C向前引用

来源:互联网 发布:html源码怎么用 编辑:程序博客网 时间:2024/04/30 13:59

在声明某个实例变量或属性的类型时,编译器需要知道那种类型。视图控制器的头文件已经导入常见的IOS头文件中,因此可以访问到所有这类型的定义。
要实现新类的声明,有两种方法。第一种方法是导入这个新类的头文件。要构建Car类的属性,需要使用#import”Car.h”语句
另一种方法是针对Car这个类,使用@class Car声明“向前引用”;告诉编译器Car是合法的类,并且在某处定义。通常,在.h文件中使用@class,在.m文件中使用#import。
使用向前引用有三个原因。第一个是加速代码的构建。在目前已经做完的小项目中,根本不存在这个问题,但是在有着树状子类的更大项目中,Xcode需要处理头文件每个导入的文件。可能的是,每个头文件中,存在许多需要被处理的导入类,即使只有一个或两个实现文件才使用到这个类。
第二点是,也是不太普遍的一点,在于避免循环引用。在一个发生在当两个类最后引用彼此的实例变量时。也就是说,类A需要包含类B的一个属性,类B有类A的一个属性。通常,问题不会这么明显,属性是在其他类的子类中进行声明。
最后一个原因在于避免复杂,处于重用性考虑。
最有效的策略是在.h文件中使用@class,在.m文件中使用#import

资料来源于《ios开发完全上手》

0 0