【问题标题】:Why some methods are required in delegates?为什么委托中需要一些方法?
【发布时间】:2010-08-18 14:36:14
【问题描述】:

我很好奇 - 为什么UITextInputDelegate 需要所有方法?为什么我不能只实现我想要的(例如textDidChange)?

【问题讨论】:

    标签: objective-c cocoa-touch ios


    【解决方案1】:

    这可能是一个性能问题。这些方法被频繁调用,每次发生任何变化时都必须发送-respondsToSelector: 对性能造成很大影响。

    【讨论】:

    • 可以,但您不必在每次通话时都调用 respondsToSelector。您只能在委托更改时检查。这甚至可能更快,因为你只比较一个布尔值,我认为它比调用空方法更快。
    • 所以谜团仍然存在 :) 我同意这个答案,因为它听起来很合理。
    • 谢谢梅林。需要明确的是,答案只是猜测。我没有来自 Apple 的任何秘密信息。
    【解决方案2】:

    你不能只为你不需要的三个方法做空函数吗?

    【讨论】:

    • 我可以而且我可以,我只是好奇为什么我必须这样做:)
    【解决方案3】:

    对我来说,似乎有些苹果工程师懒得正确编程委托调用。所以他只是没有设置@optional,所以他不必处理可能不存在的方法。

    【讨论】:

    • 如果是这种情况,我相信 Apple 会修复它,毕竟将代表更改为可选不会破坏现有代码。
    • 那么当您现有的代码调用未实现的可选方法时会发生什么?它会崩溃!您必须检查可选方法是否存在。您不必对所需的方法执行此操作! (见@JeremyP 的论点)
    • 是的,但我认为懒惰与此无关。
    • 是的,是的,也许他们有一些理由这样做。谁知道呢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多