为啥委托中需要一些方法?
Posted
技术标签:
【中文标题】为啥委托中需要一些方法?【英文标题】:Why some methods are required in delegates?为什么委托中需要一些方法? 【发布时间】:2010-08-18 14:36:14 【问题描述】:我很好奇 - 为什么UITextInputDelegate
需要所有方法?为什么我不能只实现我想要的(例如textDidChange
)?
【问题讨论】:
【参考方案1】:这可能是一个性能问题。这些方法被频繁调用,每次发生任何变化时都必须发送-respondsToSelector:
对性能造成很大影响。
【讨论】:
可以,但您不必在每次通话时都调用 respondsToSelector。您只能在委托更改时检查。这甚至可能更快,因为你只比较一个布尔值,我认为它比调用空方法更快。 所以谜团仍然存在 :) 我同意这个答案,因为它听起来很合理。 谢谢梅林。需要明确的是,答案只是猜测。我没有来自 Apple 的任何秘密信息。【参考方案2】:你不能只为你不需要的三个方法做空函数吗?
【讨论】:
我可以而且我可以,我只是好奇为什么我必须这样做:)【参考方案3】:对我来说,似乎有些苹果工程师懒得正确编程委托调用。所以他只是没有设置@optional,所以他不必处理可能不存在的方法。
【讨论】:
如果是这种情况,我相信 Apple 会修复它,毕竟将代表更改为可选不会破坏现有代码。 那么当您现有的代码调用未实现的可选方法时会发生什么?它会崩溃!您必须检查可选方法是否存在。您不必对所需的方法执行此操作! (见@JeremyP 的论点) 是的,但我认为懒惰与此无关。 是的,是的,也许他们有一些理由这样做。谁知道呢。以上是关于为啥委托中需要一些方法?的主要内容,如果未能解决你的问题,请参考以下文章