面试题答案
一键面试-
定义协议: 在Objective - C中,使用
@protocol
关键字定义协议。语法如下:@protocol 协议名称 <NSObject> // 协议方法声明 - (void)协议方法1; - (NSString *)协议方法2; @end
通常协议会继承自
NSObject
协议,这样就可以使用NSObject
协议中的一些基础方法。 -
类遵循并实现协议方法: 类在声明时遵循协议,语法如下:
@interface 类名 : 父类 <协议名称> @end @implementation 类名 - (void)协议方法1 { // 实现协议方法1的代码 } - (NSString *)协议方法2 { // 实现协议方法2的代码 return @"返回值"; } @end
-
设置协议方法的可选性: 在协议定义中,使用
@optional
关键字来声明可选方法。例如:@protocol 协议名称 <NSObject> - (void)必须实现的方法; @optional - (void)可选实现的方法; @end
-
检查一个对象是否遵循某个协议: 使用
conformsToProtocol:
方法来检查对象是否遵循某个协议。例如:Class class = [MyClass class]; if ([class conformsToProtocol:@protocol(协议名称)]) { NSLog(@"该类遵循此协议"); } else { NSLog(@"该类不遵循此协议"); }
对于对象实例也可以这样检查:
MyClass *obj = [[MyClass alloc] init]; if ([obj conformsToProtocol:@protocol(协议名称)]) { NSLog(@"该对象遵循此协议"); } else { NSLog(@"该对象不遵循此协议"); }