面试题答案
一键面试实现思路
- 定义多个协议:为每个需要“继承”的功能定义一个协议,协议中声明相关的方法。
- 类遵循多个协议:让目标类遵循这些定义好的协议,通过实现协议中的方法来获取相应的功能。
背后原理
协议只是定义了一组方法的声明,不包含方法的实现。一个类遵循多个协议,就相当于这个类承诺会实现这些协议中定义的方法,从而模拟出从多个不同“父类”获取功能的效果,实现了代码功能的复用。
代码示例
// 定义第一个协议
@protocol Protocol1 <NSObject>
- (void)method1;
@end
// 定义第二个协议
@protocol Protocol2 <NSObject>
- (void)method2;
@end
// 类遵循多个协议
@interface MyClass : NSObject <Protocol1, Protocol2>
@end
@implementation MyClass
- (void)method1 {
NSLog(@"执行 method1");
}
- (void)method2 {
NSLog(@"执行 method2");
}
@end
// 使用示例
int main(int argc, const char * argv[]) {
@autoreleasepool {
MyClass *obj = [[MyClass alloc] init];
[obj method1];
[obj method2];
}
return 0;
}