委托是一种核心设计模式。它允许在程序的各个部分之间分离职责。这个想法是,例如,绘制到屏幕上的程序部分可能不应该与您的数据库对话。有几个原因:
性能:如果绘制到屏幕的同一个对象访问您的数据存储,您将遇到性能问题。时期。句号。
代码维护:更容易概念化适当模块化的代码。(对我来说,无论如何)
灵活性:如果您在代码中进行子类化,那就太好了——直到您开始遇到具有各种不良行为的单体类。您将达到必须重载行为以关闭事物的地步,并且您的属性命名空间可能会被污染。尝试类别、委派和块以寻找替代方案。
也就是说,我确实遇到了适合子类化的情况。我有一个自助服务终端应用程序,如果一段时间内没有与之交互,我想在其中自动关闭某个设置菜单。为此,我必须能够访问整个应用程序中的触摸事件。我继承UIApplication
并覆盖了sendEvent:
. 那是合适的,尽管这是一个边缘案例。正如所罗门王在传道书中所说的那样,意译:太阳底下的一切都有时间和地点。
为了更容易编写、阅读、迭代和维护您的程序,强烈建议您遵循某些做法。欢迎您对许多类进行子类化,Apple 不会因为您的应用程序代码不佳而拒绝您的应用程序,只要它按照宣传的方式运行即可。也就是说,如果你不遵守经过实践检验的具体做法,你就是在自掘坟墓。子类化本质上并不坏,但类别、协议和块是如此迷人,我还是更喜欢它们。