面试题答案
一键面试@selector()常见使用场景
- 消息传递:在Objective-C中,对象通过发送消息来执行方法。
@selector()
用于指定要发送的消息,即方法的选择器。例如,在使用performSelector:
系列方法时,通过@selector()
指定要执行的方法。 - 代理模式:代理对象需要实现特定的方法,通过
@selector()
来指定代理方法。比如在视图控制器中设置代理并指定代理方法。 - 通知中心:当注册通知时,
@selector()
用于指定接收到通知后要执行的方法。
语法格式举例
- 基本格式:
@selector(methodName)
,例如:
// 定义一个方法
- (void)printHello {
NSLog(@"Hello");
}
// 使用@selector获取方法选择器
SEL selector = @selector(printHello);
- 带参数方法:
@selector(methodName:parameterName:)
,例如:
// 定义带参数的方法
- (void)printMessage:(NSString *)message {
NSLog(@"%@", message);
}
// 使用@selector获取带参数方法的选择器
SEL selector = @selector(printMessage:);
- 多个参数方法:
@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的动态绑定特性,提高了代码的灵活性和扩展性。