MST
星途 面试题库

面试题:Objective-C 中协议的基本使用

请简述在Objective-C中如何定义一个协议,以及一个类如何遵循该协议并实现协议中的方法。另外,说明协议方法的可选性如何设置,以及如何检查一个对象是否遵循某个协议。
15.1万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试
  1. 定义协议: 在Objective - C中,使用@protocol关键字定义协议。语法如下:

    @protocol 协议名称 <NSObject>
    // 协议方法声明
    - (void)协议方法1;
    - (NSString *)协议方法2;
    @end
    

    通常协议会继承自NSObject协议,这样就可以使用NSObject协议中的一些基础方法。

  2. 类遵循并实现协议方法: 类在声明时遵循协议,语法如下:

    @interface 类名 : 父类 <协议名称>
    @end
    
    @implementation 类名
    - (void)协议方法1 {
        // 实现协议方法1的代码
    }
    - (NSString *)协议方法2 {
        // 实现协议方法2的代码
        return @"返回值";
    }
    @end
    
  3. 设置协议方法的可选性: 在协议定义中,使用@optional关键字来声明可选方法。例如:

    @protocol 协议名称 <NSObject>
    - (void)必须实现的方法;
    @optional
    - (void)可选实现的方法;
    @end
    
  4. 检查一个对象是否遵循某个协议: 使用conformsToProtocol:方法来检查对象是否遵循某个协议。例如:

    Class class = [MyClass class];
    if ([class conformsToProtocol:@protocol(协议名称)]) {
        NSLog(@"该类遵循此协议");
    } else {
        NSLog(@"该类不遵循此协议");
    }
    

    对于对象实例也可以这样检查:

    MyClass *obj = [[MyClass alloc] init];
    if ([obj conformsToProtocol:@protocol(协议名称)]) {
        NSLog(@"该对象遵循此协议");
    } else {
        NSLog(@"该对象不遵循此协议");
    }