2
在我的ios应用程序中,我使用FMDB连接到sqlite3数据库。 在应用中,数据库将在multithread.As使用的结果,我以这种方式创建一个单例:FMDB与多线程问题
+ (id)instance
{
static DBManager *dbManager = nil;
if (dbManager == nil) {
dbManager = [[DBManager alloc]init];
}
[dbManager initialDBmanager];
return dbManager;
}
但是错误:FMDataBase正在使用,有时occures。 然后我更新实例:
+ (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;
}
错误仍然存在。 所以我的问题是如何正确地创建一个单身人士,为什么代码无法避免的错误。 谢谢!
你在哪里用过@synthesized? – Minakshi 2014-05-07 06:34:10
现在我为db的每个写操作添加一个'nslock'。 '合成的'是一种懒惰的方式〜:-) – scorpiozj 2014-05-08 09:05:51