Я хотел бы создать модели на основе базы данных, поэтому я хочу использовать свой собственный класс DatabaseModel для управления соединением с базой данных, и каждый класс, использующий базу данных, получен из нее (это будет отображение между моделью и таблицей) , Я использую API sqlite.
Поскольку мне нужен только один экземпляр подключения к базе данных, я создал статическую переменную для хранения экземпляра подключения
DatabaseModel.h
---------------
@interface DatabaseModel : NSObject {
}
// the connection instance
static FMDatabase *database;
+(BOOL) open;
+(void) close;
+(id)getDatabase;
@end
DatabaseModel.m
---------------
// Is it necassary?
static FMDatabase *database = nil;
@implementation DatabaseModel
+(BOOL) open
{
// make connection (doodled code)
database = [DBAPI open];
}
+(void) close
{
// ...
}
+(id)getDatabase
{
// Throws bad_memory_access
[database retain];
return database;
}
@end
MyClass.h
---------
@interface MyClass : DatabaseModel
{
}
-(void) foobar;
@end
MyClass.m
---------
@implementation MyClass
-(void) foobar
{
// This assign doesn't work
database = [DatabaseModel getDatabase];
}
@end
В этом случае [сохранение базы данных] вызывает исключение bad_access. Я не совсем понимаю, когда база данных является статической переменной, почему я получаю это сообщение ...