我想在 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:我没有很强的面向对象背景,所以如果我的想法不好,我不介意完全改变它。
您可以使用“析构函数”在退出时自动关闭数据库
__attribute__((destructor))
static void close_db (void) {
sqlite3_close(database);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)