-1

我创建了一个用于管理 SQLite 数据库的小类。但是现在,当我尝试初始化类并调用方法时 - 我收到 EXEC_BAD_ACCES 错误。我已经看到这与内存管理有关,对吧?也许有人可以在这里帮助我或给我一些建议?会很好!

查看我的消息来源:

头文件:

#import <Foundation/Foundation.h>
#import "FMDatabase.h"

@interface DatabaseManager : NSObject
{
    FMDatabase *database;
}

-(void)selectData;

@end

实现文件:

#import "DatabaseManager.h"

@implementation DatabaseManager {

}

/*-------------------------------------------------------
* Class constructor
* Initializes the SQLite database connection.
-------------------------------------------------------*/
-(void)init {
    self = [super init];
    if(self) {

        // Retrieve database path
        NSString* databasePath = [[NSBundle mainBundle] pathForResource:@"database"     ofType:@"sqlite"];

        // Connect to database
        database = [FMDatabase databaseWithPath: databasePath];

        // Check database connection
        if(![database open]) {
            database = nil;
            NSLog(@"ERROR: Failed to open SQLite connection!");
        }

    }
}


-(void)selectData: (NSString *)withSqlQuery{
    return withSqlQuery;
}

@end

类的初始化和方法的调用:

DatabaseManager *databaseManager = [[DatabaseManager alloc] init];
[databaseManager selectData];

最好的问候

4

1 回答 1

1
    database = [FMDatabase databaseWithPath: databasePath];

这将返回一个自动释放的对象。除非您启用了 ARC(您应该启用),否则该对象将在不久的将来某个时候被释放;最有可能在电流结束时通过运行循环。

如果由于某种原因您无法打开 ARC,retain则该对象。

并阅读有关Cocoa 内存管理的信息。

于 2013-04-30T15:03:58.550 回答