私のiOSアプリでは、FMDBを使用してsqlite3dbに接続しています。アプリでは、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;
}
エラーはまだ存在します。だから私の質問は、シングルトンを正しく作成する方法と、コードがエラーを回避できない理由です。ありがとう!