• iOS单例实现


    头文件: #import #define kFilename @"data.sqlite3" @interface BOOKSQLiteHelper : NSObject - (NSString *) dataFilePath; + (BOOKSQLiteHelper *) getInstance; @end 实现: #import "BOOKSQLiteHelper.h" #import "sqlite3.h" @implementation BOOKSQLiteHelper static BOOKSQLiteHelper *instance = nil; - (id)init { self = [super init]; if (self) { sqlite3 *database; if(sqlite3_open([[self dataFilePath] UTF8String], &database) != SQLITE_OK){ sqlite3_close(database); NSAssert(0,@"Failed to open database"); } } return self; } + (BOOKSQLiteHelper *) getInstance { if(instance==nil){ instance = [[BOOKSQLiteHelper alloc] init ]; } return instance; } - (NSString *)dataFilePath { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; return [documentsDirectory stringByAppendingPathComponent:kFilename]; } @end 有的同学说你这样init方法不是暴露了吗?事实上,你单例写再好用户也看不到,凑合用可以了。getInstance也是自己用。自己注意就好了。把精力放在用户看的到的地方!
  • 相关阅读:
    数据库优化
    Oracle语句集锦
    MVC Razor标签
    转载 操作MyBatis基础
    mysql sqlserver Oracle字符串连接
    Word
    部署IIS错误
    => 朗姆达表达式带入符号
    wcf例子01
    idea通过springboot初始化器新建项目
  • 原文地址:https://www.cnblogs.com/wanyakun/p/3403308.html
Copyright © 2020-2023  润新知