我想在Objective C中提供对sqlite数据库的访问。我不希望调用者对数据库本身感到困扰,因此我打算在我的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背景,所以如果我的想法不好,我不介意完全改变它。答案 0 :(得分:2)
您可以使用“析构函数”在退出时自动关闭数据库
__attribute__((destructor))
static void close_db (void) {
sqlite3_close(database);
}