【问题标题】:What is the need for selectors? [duplicate]选择器需要什么? [复制]
【发布时间】:2012-07-15 20:40:07
【问题描述】:

可能重复:
Are selectors in Objective-C just another way to send a message to an object?

我已经阅读了 Apple 关于选择器的文档,但我仍然不明白为什么需要它们。

据我所知,选择器相当于函数指针。对吗?

【问题讨论】:

标签: objective-c selector objective-c-runtime


【解决方案1】:

选择器用于获取对象的方法实现。

例如,几乎每个对象都实现了description 方法,即使它从其超类继承了实现。函数指针只能指向 description 的一个特定实现(例如,它只能指向 NSString 的版本或 NSNumber 的版本,但不能同时指向两者)。您不能将一个类的 description 实现的函数指针用于每个类,但您可以使用相同的 description 选择器,并且使用什么对象并不重要作为目标,将始终使用正确的方法实现。

【讨论】:

    【解决方案2】:

    选择器不是函数指针。

    选择器是唯一地址方法标识符(消息名称)。信使函数 (objc_msgSend_*()) 需要它们才能快速:在查找方法名称时,信使不需要每次都进行相当昂贵的字符串比较,因为选择器在内存中具有唯一的地址,所以一个简单的指针比较就足够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 1970-01-01
      • 2016-07-02
      • 2011-05-26
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      相关资源
      最近更新 更多