【发布时间】:2017-02-10 00:07:50
【问题描述】:
是否可以将参数传递给 Singleton 类?如果有怎么办?
这是我的一个 Singleton 类的 sn-p:
class NotificationManager: NSObject {
static let sharedManager = NotificationManager()
var tabBarController: UITabBarController!
private override init() {
super.init()
}
在此 Singleton 的情况下,公共属性 tabBarController 在使用之前必须始终设置。
我想知道是否可以在启动时传递正确的UITabBarcontroller 对象,因为我认为这是我的 Singleton 类被实例化的时候?这将防止类被错误地实现。并不是说我曾经期望这会成为一个问题。
另外,在这种情况下使用 Singleton 类是否完全没问题?管理一组特定的操作?过去我总是传递对象,尤其是managedObjectContext,但现在我发现 Singleton 类可以让大型应用程序中的一切变得更清洁、更好、更安全(因为只有一种立场)。我可以理解在类之间传递对象对于较小的应用程序来说很好,但是一旦它们变大就会变得非常混乱。
在我最近的应用程序中,我还在我的 iOS 和 watchOS 应用程序之间使用了一个共享的 Singleton 类,它定义了一些全局变量,例如服务器端点和环境。这似乎是定义需要此访问权限的变量的最佳方式。
我有朋友告诉我 Singletons 不好用,而且根据我的谷歌搜索,它看起来真的是一个混合包。就我而言,它们使我的代码更易于管理和处理。
谢谢。
【问题讨论】: