FMDB有多线程问题

时间:2011-05-07 13:10:40

标签: ios fmdb

在我的ios应用程序中,我使用FMDB连接到sqlite3数据库。 在应用程序中,db将用于多线程。因此,我以这种方式创建一个单例:

+ (id)instance
{
static DBManager *dbManager = nil;
if (dbManager == nil) {
    dbManager = [[DBManager alloc]init];
}

[dbManager initialDBmanager];
return dbManager;
}

但错误:FMDataBase目前正在使用中,有时会发生。 然后我更新实例:

+ (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;
}

错误仍然存​​在。 所以我的问题是如何正确创建单例以及为什么代码无法避免错误。 谢谢!

1 个答案:

答案 0 :(得分:1)

我使用@synchronized,它会暂时解决问题。

我会留意它〜