Emi*_*Adz 3 singleton parameter-passing ios swift
我有以下课程:
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
}
}
Run Code Online (Sandbox Code Playgroud)
问题:如果你看一下init方法,你会发现它应该作为参数接收我想要存储在单例中的委托指针,所以基本上我需要将这个参数传递给这一行:
Static.instance = FeedDataManager()
Run Code Online (Sandbox Code Playgroud)
但我不知道它是如何完成的,有谁知道如何做到这一点?
BTW:我看到了这个链接: Singleton和init with parameter 但单例创建有不同.
Rob*_*Rob 10
我们可以向您展示如何将参数添加到单例声明中,但这不是一个好主意.单例背后的整个想法是它实例化的地方并不重要,你可以在任何地方使用它.如果您在代码中的两个不同位置使用不同的参数调用此单例,这意味着什么?你有一个竞争条件,行为可能会根据首次遇到单身人士的地点和方式而改变.
不相关,但dispatch_once多余.这些static变量已经被使用了dispatch_once.请参阅http://developer.apple.com/swift/blog/?id=7结尾处的讨论(这主要是针对全局变量,但正如它们在括号中指出的那样,它也适用于static变量).此外,在Swift 1.2中,我们现在可以拥有静态类变量struct,也不需要它
| 归档时间: |
|
| 查看次数: |
3520 次 |
| 最近记录: |