iOS sqlite3 락 문제(Sqlite3 is locked in iOS).
by Seungbeom Kim
클래스업(ClassUp)을 배포하고 받는 에러중에 sqlite3LockAndPrepare
같은 에러를 발견했다.
즉, 락이 걸린 것이다.
여기서 또 하나 배웠다. 나는 한번도 걸리지 않는 락이 다른 사용자에게서는 걸릴 수 있다는 것을…
Singleton 패턴을 이용해서 Database 작업을 하고 있기 때문에 아래와 같이 락을 걸기로 했다.
.h 파일
//...
@interface ClassUpDbUtil : NSObject
@property (nonatomic, string) NSObject *lock;
@end
.m 파일
//...
@implementation ClassUpDbUtil
//...
- (id)init {
if(self = [super init]) {
self.lock = [[NSObject alloc] init];
}
}
//...
- (void)readSomething {
if(self.lock == nil) {
self.lock = [[NSObject alloc] init];
}
@synchronized (self.lock) {
// database 처리
}
}
iOS 락에 관하여 조금 더 자세히 알고 싶으면 링크를 참조하면 된다.
Subscribe via RSS