2
내 ios 응용 프로그램에서는 FMDB를 사용하여 sqlite3 db에 연결합니다. 응용 프로그램에서 이 DB는 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
이제 각 쓰기 작업에 대해 db에 nslock을 추가합니다. 'synthetic'은 게으른 방법입니다 ~ :-) – scorpiozj