Ric*_*son 7 singleton ios swift swift3
我有一个单例类:
class Database {
static let instance:Database = Database()
private var db: Connection?
private init(){
do {
db = try Connection("\(path)/SalesPresenterDatabase.sqlite3")
}catch{print(error)}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我使用Database.instance.xxxxxx访问此类以在类中执行函数.但是,当我从另一个线程访问该实例时,它会抛出奇怪的结果,就像它试图创建另一个实例一样.我应该在同一个线程中引用该实例吗?
澄清奇怪的结果显示数据库I/O错误,因为两个实例一次尝试访问数据库
更新
请参阅此问题以获取有关数据库代码的更多信息:使用事务插入是抛出错误Sqlite.swift
class var shareInstance: ClassName {
get {
struct Static {
static var instance: ClassName? = nil
static var token: dispatch_once_t = 0
}
dispatch_once(&Static.token, {
Static.instance = ClassName()
})
return Static.instance!
}
}
Run Code Online (Sandbox Code Playgroud)
使用:let object:ClassName = ClassName.shareInstance
Swift 3.0
class ClassName {
static let sharedInstance: ClassName = { ClassName()} ()
}
Run Code Online (Sandbox Code Playgroud)
使用:let object:ClassName = ClassName.shareInstance
| 归档时间: |
|
| 查看次数: |
3899 次 |
| 最近记录: |