【发布时间】:2011-05-09 22:16:20
【问题描述】:
在我的 ios 应用程序中,我使用 FMDB 连接到 sqlite3 数据库。 在app中,db会在多线程中使用,结果我是这样创建单例的:
+ (id)instance
{
static DBManager *dbManager = nil;
if (dbManager == nil) {
dbManager = [[DBManager alloc]init];
}
[dbManager initialDBmanager];
return dbManager;
}
然而 Error: FMDataBase is current in use ,有时会发生。 然后我更新实例:
+ (id)instance
{
static DBManager *dbManager = nil;
if (dbManager == nil) {
dbManager = [[DBManager alloc]init];
[dbManager initialDBmanager];
}
while([dbManager.db inUse])//In my opinion this promises the db is free
{
}
return dbManager;
}
错误仍然存在。 所以我的问题是如何正确创建单例以及为什么代码无法避免错误。 谢谢!
【问题讨论】: