如何快速创建带参数的单例:

埃米尔·阿兹(Emil Adz)

我有以下课程:

class FeedDataManager: URLManagerdelegate {

let TAG: String = "FeedDataManager"

weak var mDelegate: KeyboardViewController?

var mModelManager: ModelManager!
var mURLManager: UrlManager!
var mGetNewsTimer: NSTimer?

var mFeedsArray: Array<News>!

var mManagedObjectContext: NSManagedObjectContext!
var mPersistentStoreCoordinator: NSPersistentStoreCoordinator!
var mManagedObjectModel: NSManagedObjectModel!

class var sharedInstance: FeedDataManager {
    struct Static {
        static var onceToken: dispatch_once_t = 0
        static var instance: FeedDataManager? = nil
    }

    dispatch_once(&Static.onceToken) {
        Static.instance = FeedDataManager()
    }
    return Static.instance!
}

init (aDelegate: KeyboardViewController) {
    self.mDelegate = aDelegate
}
}

问题:如果您查看init方法,您将看到它应该将我要存储在单例中的委托指针作为参数接收,因此基本上我需要将此参数传递给此行:

Static.instance = FeedDataManager()

但是我不知道它是如何完成的,有谁知道该怎么做?

顺便说一句:我看到了此链接:Singleton和带有参数的init,但是那里的singleton创建是不同的。

我们可以向您展示如何在单例声明中添加参数,但这并不是一个好主意。单例背后的整个想法是,无论实例化在哪里,都可以在任何地方使用它。如果您在代码中的两个不同位置使用不同的参数调用此单例,那意味着什么?您有一个竞赛条件,行为可能会根据第一次遇到的位置和方式而改变。

无关,但是dispatch_once是多余的。static变量已经采用具有dispatch_once请参阅http://developer.apple.com/swift/blog/?id=7末尾的讨论(这主要是针对全局变量的,但正如他们在括号中指出的那样,它也适用于static变量)。此外,在Swift 1.2中,我们现在可以拥有静态的类变量,也无需使用struct

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单例带参数

来自分类Dev

带参数的单例模式对象

来自分类Dev

如何在单例中传递参数

来自分类Dev

如何在Scala中使用运行时参数创建单例对象

来自分类Dev

如何模拟单例工厂的对象创建?

来自分类Dev

如何使用Python创建单例?

来自分类Dev

如何创建单例可观察对象?

来自分类Dev

带锁的单例属性如何确保线程安全?

来自分类Dev

如何从快速单例init引发错误/异常

来自分类Dev

如何从快速单例init引发错误/异常

来自分类Dev

快速访问单例对象

来自分类Dev

南希用构造函数参数创建单例

来自分类Dev

创建通用单例

来自分类Dev

无法创建单例

来自分类Dev

如何创建一个在春季创建单例的工厂

来自分类Dev

如何创建一个在春季创建单例的工厂

来自分类Dev

如何创建一对一的单例关系

来自分类Dev

如何在单例中创建QML对象?

来自分类Dev

克隆如何创建单例的新版本?

来自分类Dev

如何在Scala中创建通用类型的对象/单例?

来自分类Dev

我如何仅出于实现目的创建单例实例?

来自分类Dev

如何在vala中创建线程安全的单例?

来自分类Dev

如何在Polymer中创建单例元素

来自分类Dev

如何在Javascript中创建单例类?

来自分类Dev

如何使用NestJS创建充当单例的服务

来自分类Dev

如何创建非单例的有角JS服务?

来自分类Dev

如何在iOS中创建单例类?

来自分类Dev

如何在C ++中创建简单的单例类?

来自分类Dev

如何使用FSharp API创建集群单例?