objective-c - 通过静态方法访问实例变量

标签 objective-c

当我运行这个时:

@interface Database : NSObject {
      sqlite3 *database;
}

+(void)openDatabase;

@end



@implementation Database

+(void)openDatabase
{
    NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *databaseNameandPath = [NSString stringWithFormat:@"%@/DatabaseSnax.sqlite",docDir];
    NSString *databasePath=[[NSString alloc]initWithFormat:databaseNameandPath];

    if(sqlite3_open([databasePath UTF8String], &database) != SQLITE_OK)
    {
        NSLog(@"Error when open the database");
    }

    [databasePath release];
}

我有这个错误:在类方法中访问的实例变量数据库

我该如何解决这个问题,我需要将我的方法(打开数据库)保留为静态方法,以便我可以按类名使用它,例如:

[Database openDatabase];

最佳答案

不可能从类方法中访问实例变量。但是,您可以声明一个全局变量:

static sqlite3 *database;
// ...
+ (void) openDatabase {
    sqlite3_open(filename, &database);
    // ...
}

关于objective-c - 通过静态方法访问实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8871583/

相关文章:

objective-c - idleTimerDisabled 不起作用(防止 iPad 屏幕进入休眠状态)

iphone - 调用选项卡栏上的 View 进行显示,而无需用户按选项卡栏(以编程方式)

objective-c - 如何按其类的成员(即 int 或 float)对对象的 NSMutableArray 进行排序

ios - 如何将 C int 放入 NSArray?

ios - 单击按钮时未播放音频

ios - 以编程方式截取屏幕截图时 View 中的 UIImage 未保存 - Objective-C

objective-c - 如何将上下文相关菜单添加到 NSOutlineView(即右键单击菜单)

ios - 显示警报 View 时按钮更改位置

ios - 错误发生在一个项目中,而不是部分复制的第二个项目中。与播放多媒体相关

ios - 了解 UIScrollView 约束