zoukankan      html  css  js  c++  java
  • 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也是自己用。自己注意就好了。把精力放在用户看的到的地方!
  • 相关阅读:
    js固定在顶部
    css垂直居中
    HTML 5离线存储
    jdbc数据库操作
    I/O输入输出流
    异常处理
    java实现冒泡排序算法
    Java 方法
    java 循环 基本类型
    Java中Arrays工具类
  • 原文地址:https://www.cnblogs.com/wanyakun/p/3403308.html
Copyright © 2011-2022 走看看