面试题答案
一键面试接口文件(.h)
- 结构:
- 通常以
#import
语句开始,用于导入其他必要的头文件,以提供所需的类型定义和声明。 - 接着是类的声明,使用
@interface
关键字,声明类名、父类以及遵守的协议等。 - 在
@interface
块内定义类的属性(使用@property
关键字)和方法声明(包括实例方法和类方法)。
- 通常以
- 作用:
- 对外暴露接口:接口文件是类的公共接口,向其他类展示这个类能提供什么功能,其他类可以通过导入该头文件来知晓并使用这些功能。
- 定义类型信息:定义类的属性和方法,为其他代码提供类型定义,使其知道如何与该类的实例进行交互。例如,属性的类型定义让其他类知道可以获取或设置什么样的数据类型,方法声明让其他类知道该类能够执行哪些操作。
实现文件(.m)
- 结构:
- 首先也会使用
#import
导入对应的接口文件(.h
文件),确保接口定义可用。 - 然后使用
@implementation
关键字开始类的实现部分,在这个块内实现接口文件中声明的方法,包括方法的具体逻辑。 - 还可以在
@implementation
块内定义私有属性和私有方法(虽然Objective - C没有严格意义上的私有,但通过这种方式可以实现一定程度的隐藏)。
- 首先也会使用
- 作用:
- 实现功能:实现文件负责具体功能的实现,将接口文件中声明的方法具体实现,包含业务逻辑、算法等。其他类调用接口文件中声明的方法时,实际执行的是实现文件中的代码。
- 封装细节:隐藏类的实现细节,只向外部暴露接口文件中的公共接口,提高代码的安全性和可维护性。例如,外部类无需知道某个方法内部具体的算法实现,只需要通过接口调用即可。