作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的 iOS 应用程序创建一个类来处理我的所有数据库功能。目前,我有一个可以保存数据的类方法。在其中,我创建了一个数据库和一个表。然后,我开始保存数据。每次调用此方法时都会发生这种情况。但是,我只处理带有单个表的单个数据库,所以我希望这一切只发生一次。
#import <sqlite3.h>
#import "LocalDatabase.h"
@implementation LocalDatabase
+ (void)saveData:(id)sender {
/* create database (if it doesnt exist) */
sqlite3 *database = nil;
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"db.sql"];
if(sqlite3_open([path UTF8String], &database) != SQLITE_OK) {
NSLog(@"Failed to open database");
}
/* create table (if it doesnt exist) */
char *err;
NSString *statement = @"CREATE TABLE IF NOT EXISTS DATA (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, CATEGORY TEXT)";
if (sqlite3_exec(database, statement, NULL, NULL, &err) != SQLITE_OK) {
NSLog(@"Failed to create table");
}
/* save data */
// some code that uses database
}
@end
#import "A.h"
@implementation A
static NSString *b = @"TEXT!!";
+ (void) c {
//do stuff with b
}
@end
@"TEXT!!!"
到
NSString *b
只有一次。我想我可以用它来解决我的问题。但是,我意识到以下内容无法编译:
#import "A.h"
@implementation A
static NSString *b = [NSString stringWithFormat:@"%@",@"TEXT!!!"];
+ (void) c {
//do stuff with b
}
@end
static NSString *b = @"TEXT!!";
只有一次?当然,我可以为初始化创建一个单独的类方法,或者创建一个静态 bool 值来跟踪我是否已经初始化,但我想知道是否有更简洁的方法。
最佳答案
在你的方法中使用这样的东西:
static dispatch_once_t pred;
dispatch_once(&pred, ^{
// stuff to do only once
});
关于ios - 如何为一个类只运行一次代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22596110/
我是一名优秀的程序员,十分优秀!