OC 中方法名为什么被称作选择器(selector)?

本文探讨了消息和函数调用的关键区别:消息接收者和方法的绑定在运行时发生,而函数则在编译时绑定。这使得消息能够实现多态性,即不同的对象可以响应相同的消息但执行不同的行为。
函数调用和消息的一个关键区别是,函数和它的参数是在编译时绑定在一起的,而消息和接收者直到程序运行时,消息被发送才实现这种绑定。因此,响应一个消息的具体方法是在运行时才决定的,而不是在代码被编译的时候。消息启动哪个方法取决于消息的接收者,不同的接收者可能有同名的不同方法实体,这就是多态。编译器要为一个消息找到正确的方法实体,它必须知道这个接收者属于什么对象,也就是它属于什么类。这是一个对象在运行时接收到消息时能够获取的信息,但这些信息不是可以通过代码中的类型声明就能获得的,方法实体的选择发生在运行时。当消息发出之后,运行时环境会查看接收者以及它的和消息同名的方法,它通过名字匹配找到这个接收者的方法,并调用它,并传递一个指向接收者实例变量的指针。消息中的方法名用来“选择”接收者的方法,正是由于这个原因,消息中的方法名常被称作选择器(selector)。方法和消息的动态绑定,以及多态之间的协调合作,给了面向对象编程丰富的灵活性和强大的功能,因为每个对象都可以有一个方法的自己的版本,但仅仅是接收相同消息的对象不同,而这些都可以在程序运行时完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值