2014-04-05 8 views
2

...언제 FMDatabaseQueue를 닫아야합니까? 나는 모든 종류의 정보를 저장하는 내 아이폰 OS 응용 프로그램에서 <a href="https://github.com/ccgus/fmdb" rel="nofollow">FMDB</a>을 사용하고

때로는

그것은, 그 여러 스레드가 액세스 일어날 수있는 내 같은 시간에, 그래서와 상호 작용 FMDatabaseQueue를 사용하기로 결정 FMDatabase 내 SQLite 데이터베이스.

제 생각에 FMDatabaseQueueFMDatabase을 열거 나 닫을 수 없습니다. 이 올바른지?

응용 프로그램 시작시 하나의 FMDatabaseQueue 인스턴스를 만들고, 여러 스레드에서 모든 스레드를 사용하고 응용 프로그램을 종료 할 때 닫는 것이 좋습니까?

그렇지 않은 경우 : 누군가가 FMDatabaseQueue의 작동 방식을 설명 할 수 있습니까?

+0

네, 맞습니다. 사실, 'FMDatabase'를 사용하는 단일 스레드 응용 프로그램에서도 일반적으로 한 번 열어야합니다. – Rob

+0

@Rob 이상하게도'FMDatabse'는'inTransaction'이나'inDatabase'와 같은'FMDatabaseQueue' 메쏘드에서 접근 할 때 열려 있지 않습니다. 'The FMDatabase 이 오픈되어 있지 않습니다 .'라는 오류 메시지가 뜹니다.''inTransaction' 메서드의 시작 부분에'[db open]; 코드 줄을 추가하고 잘 작동했습니다. 왜 내가 여기서 명시 적으로 데이터베이스를 열어야하는지 알고 있습니까? 또한 명시 적으로 열었 으면 닫을 필요가 있습니까? – Sam

+1

@Sam - 이것은 'FMDatabaseQueue'' inDatabase' 또는'inTransaction' 내에서 데이터베이스를'close'했을 때 발생할 수 있습니다. 'FMDatabaseQueue'를 사용할 때, 당신에게 건네지는'FMDatabase'의'close'를 호출해서는 안됩니다. – Rob

답변

2

나는 FMDB가 나를 읽었을 때 이미이 질문들을 다루고 있다고 생각한다.

대기열을 놓으면 연결이 닫힙니다.