MST

星途 面试题库

面试题:Objective-C中@selector()的使用场景及语法规则

请详细阐述在Objective-C中@selector()的常见使用场景,并举例说明其正确的语法格式,同时解释选择器(SEL)在其中起到的作用。
37.3万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

@selector()常见使用场景

  1. 消息传递:在Objective-C中,对象通过发送消息来执行方法。@selector()用于指定要发送的消息,即方法的选择器。例如,在使用performSelector:系列方法时,通过@selector()指定要执行的方法。
  2. 代理模式:代理对象需要实现特定的方法,通过@selector()来指定代理方法。比如在视图控制器中设置代理并指定代理方法。
  3. 通知中心:当注册通知时,@selector()用于指定接收到通知后要执行的方法。

语法格式举例

  1. 基本格式@selector(methodName),例如:
// 定义一个方法
- (void)printHello {
    NSLog(@"Hello");
}

// 使用@selector获取方法选择器
SEL selector = @selector(printHello);
  1. 带参数方法@selector(methodName:parameterName:),例如:
// 定义带参数的方法
- (void)printMessage:(NSString *)message {
    NSLog(@"%@", message);
}

// 使用@selector获取带参数方法的选择器
SEL selector = @selector(printMessage:);
  1. 多个参数方法@selector(methodName:parameter1:parameter2:),例如:
// 定义多个参数的方法
- (void)addNumbers:(int)a and:(int)b {
    NSLog(@"%d", a + b);
}

// 使用@selector获取多个参数方法的选择器
SEL selector = @selector(addNumbers:and:);

选择器(SEL)的作用

选择器(SEL)是一个指向方法的指针,它在Objective-C运行时系统中唯一标识一个方法。@selector()表达式的结果就是一个SEL类型的值。运行时系统根据SEL来查找并调用相应的方法实现。它使得方法调用更加灵活,可以在运行时动态地决定调用哪个方法,而不是在编译时就确定。这样就实现了Objective-C的动态绑定特性,提高了代码的灵活性和扩展性。