【问题标题】:Do singletons have any sense in Objective-c context?单例在 Objective-c 上下文中是否有意义?
【发布时间】:2011-05-19 08:24:07
【问题描述】:

我来自 java/cpp 环境,其中单例确实比类(静态)方法具有优势,但是在 Objective-c 中,由于它是动态的,从我过去的观察来看,使用单例确实没有优势方法。有人可以证实这一点,或者举个例子,单例可以做一些类方法不能做的事情(但除了单例实际上是“多例”的情况)

编辑:我知道单例和类方法是什么,这不是概念问题,更像是:类方法可以完全替换 Objective-c 中的单例,使单例实现无用吗?

【问题讨论】:

    标签: objective-c singleton


    【解决方案1】:

    Objective-C 中使用单例。在 Cocoa 框架中,NSApplication、NSDocumentController 和 NSWorkspace 都是单例的例子。

    与类方法相比,使用单例的优点是可以通过创建子类来更改单例的行为。这有点罕见,但有些应用程序确实创建了 NSDocumentController 或 NSApplication 的子类。 (例如,您可能希望覆盖 NSDocument -documentClassForType: 方法)。

    【讨论】:

    • 感谢迪特里希的回答,好点子和好例子。但是,您也可以通过使用类别来“覆盖”类方法。 NSApplicationNSDocumentController 是很好的例子,让我认为他们选择这样做一定是有原因的。无论如何,我想知道的是,如果我要开始使用类方法而不是单例,我以后会遇到麻烦吗?这是一个好的决定吗?我肯定喜欢类方法更好,因为绝对不需要额外的设置并且看起来更好。再次感谢您的回答。
    • 如果使用类别覆盖方法,如何调用原始方法?通过子类化,您可以使用super
    猜你喜欢
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 2014-05-11
    相关资源
    最近更新 更多