2

私の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;
}

エラーはまだ存在します。だから私の質問は、シングルトンを正しく作成する方法と、コードがエラーを回避できない理由です。ありがとう!

4

1 に答える 1

1

@synchronizedを使用すると、一時的に問題が修正されます。

目を離さない〜

于 2011-05-09T14:16:20.827 に答える