Я хочу предоставить доступ к базе данных sqlite в Objective C. Я не хочу, чтобы вызывающая сторона беспокоилась о самой БД, и поэтому я собираюсь сделать что-то подобное в моем DataStore.m:
#import "DataStore.h"
#import <sqlite3.h>
static sqlite3 *database = nil;
@implementation DataStore
+ (void) initialize {
if(self != [DataStore class])
return;
...
...
sqlite3_open(databasePath, &database);
}
+ (NSArray *) readWith:foo:bar {
...
}
+ (bool) writeWith:foo:bar {
..
}
Теперь проблема со всем этим такова: мне никогда не удастся вызвать sqlite3_close во всем приложении. Это, конечно, не выглядит элегантно. Как я могу улучшить это?
Одним из способов было бы открывать и закрывать мою базу данных при каждом доступе и избавляться от статического дескриптора БД. Насколько это будет дорого?
PS: У меня нет сильного опыта работы с OO, и поэтому, если моя идея плохая, я не против изменить ее вообще.