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