为什么 UIApplication 类需要一个委托(delegate)来代表它完成“事情”?为什么这个类不能直接做“事情”而不需要中间对象(例如委托(delegate))?该原则的目的是什么?
以同样的方式,我问自己:为什么不能直接访问键盘来关闭它?为什么需要向 View Controller 发出委托(delegate)信号以退出第一响应者?
最佳答案
委托(delegate)是一种核心设计模式。它允许程序各部分之间的职责分离。这个想法是,例如,程序中绘制到屏幕的部分可能不应该与数据库通信。造成这种情况的原因有以下几个:
性能:如果绘制到屏幕的同一对象访问您的数据存储,您将遇到性能问题。时期。句号。
代码维护:更容易概念化正确模块化的代码。 (无论如何,对我来说)
灵活性:如果您在代码中进行子类化,那就太好了 - 直到您开始遇到具有各种不良行为的整体类。您将达到必须重载行为才能将其关闭的程度,并且您的属性命名空间可能会受到污染。尝试使用类别、委派和 block 等替代方案。正如所罗门王在《传道书》中所说:日光之下,万事皆有其时间和地点。
为了更轻松地编写、阅读、迭代和维护程序,强烈建议您遵循某些实践。欢迎您对许多类进行子类化,Apple 不会因为代码不佳而拒绝您的应用程序,前提是它按照广告中的方式运行。也就是说,如果你不遵守经过验证的具体做法,你就是在自掘坟墓。子传递本质上并不是坏事,但类别、协议(protocol)和 block 是如此令人着迷,无论如何我都更喜欢它们。
关于ios - 为什么子类化是不可取的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16402603/