为什么每次我们尝试向可能不响应消息/选择器的对象发送消息时都必须手动检查这一点?为什么语言不能在每次发送消息时或每次调用performSelector: 或调用此消息的变体时为我们进行检查。这将消除由于发送无效消息而导致的所有崩溃。
这样做效率太低了吗?
最佳答案
每个方法调用没有内置检查有几个充分的理由。首先,这将是非常低效的。但更重要的是,在大多数情况下,您应该只调用已知的方法,因此不需要检查。
但是我们确实想要在运行时进行检查有多种原因。具有可选方法的协议(protocol)是一个主要情况。使用不同版本的 API 是另一个常见原因。随着时间的推移,新方法会被添加或删除。
我们需要能够区分错误和知道我们正在调用可能存在或可能不存在的方法。当出现错误时,我们希望失败和异常(exception)。当某个方法是可选的时,我们需要进行运行时检查,以便在该方法不存在时跳过该调用。
关于objective-c - 为什么respondsToSelector : exist?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16663384/