首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >respondsToSelector:为什么存在?

respondsToSelector:为什么存在?
EN

Stack Overflow用户
提问于 2013-05-21 14:19:45
回答 1查看 108关注 0票数 2

为什么每次我们尝试向一个可能不响应消息/选择器的对象发送消息时,都要手动检查这一点?为什么语言不能在每次发送消息或调用performSelector:或此消息的变体时为我们执行检查。这将消除由于发送无效消息而导致的所有崩溃。

这样做效率会不会太低?

EN

回答 1

Stack Overflow用户

发布于 2013-05-21 14:28:28

有几个很好的理由说明为什么每个方法调用都没有内置的检查。首先,它的效率会非常低。但更重要的是,在大多数情况下,您应该只调用已知的方法,因此不需要进行检查。

但是,我们想要在运行时检查的原因有很多。具有可选方法的协议是最好的情况。使用不同版本的API是另一个常见原因。随着时间的推移,新的方法会被添加或删除。

我们需要能够区分错误和知道我们调用的方法可能存在也可能不存在之间的区别。当它是一个错误时,我们想要失败和异常。当一个方法是可选的时,我们需要执行运行时检查,以便在该方法不存在时跳过该调用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16663384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档