@@ -78,8 +78,7 @@ + (void)setLogError:(BOOL)logError
78
78
#ifdef DEBUG
79
79
LKDBLogErrorEnable = logError;
80
80
NSMutableArray *dbArray = [self dbHelperSingleArray ];
81
- @synchronized (dbArray)
82
- {
81
+ @synchronized (dbArray) {
83
82
[dbArray enumerateObjectsUsingBlock: ^(LKDBWeakObject *weakObj, NSUInteger idx, BOOL *stop) {
84
83
[weakObj.obj executeDB: ^(FMDatabase *db) {
85
84
db.logsErrors = LKDBLogErrorEnable;
@@ -100,7 +99,7 @@ + (BOOL)nullIsEmpty
100
99
101
100
+ (NSMutableArray *)dbHelperSingleArray
102
101
{
103
- static __strong NSMutableArray *dbArray;
102
+ static NSMutableArray *dbArray;
104
103
static dispatch_once_t onceToken;
105
104
dispatch_once (&onceToken, ^{
106
105
dbArray = [NSMutableArray array ];
@@ -110,32 +109,33 @@ + (NSMutableArray *)dbHelperSingleArray
110
109
111
110
+ (LKDBHelper *)dbHelperWithPath : (NSString *)dbFilePath save : (LKDBHelper *)helper
112
111
{
113
- NSMutableArray *dbArray = [self dbHelperSingleArray ];
114
112
LKDBHelper *instance = nil ;
115
113
dbFilePath = dbFilePath.lowercaseString ;
116
114
117
115
NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet ];
118
116
BOOL hasCached = NO ;
119
117
120
- for (NSInteger i = 0 ; i < dbArray.count ; i++) {
121
- LKDBWeakObject *weakObj = [dbArray objectAtIndex: i];
122
- if ([weakObj.obj.dbPath.lowercaseString isEqualToString: dbFilePath]) {
123
- if (helper) {
124
- hasCached = YES ;
125
- } else {
126
- instance = weakObj.obj ;
118
+ NSMutableArray *dbArray = [self dbHelperSingleArray ];
119
+ @synchronized (dbArray) {
120
+ for (NSInteger i = 0 ; i < dbArray.count ; i++) {
121
+ LKDBWeakObject *weakObj = [dbArray objectAtIndex: i];
122
+ if ([weakObj.obj.dbPath.lowercaseString isEqualToString: dbFilePath]) {
123
+ if (helper) {
124
+ hasCached = YES ;
125
+ } else {
126
+ instance = weakObj.obj ;
127
+ }
128
+ } else if (!weakObj.obj ){
129
+ [indexSet addIndex: i];
127
130
}
128
- } else if (!weakObj.obj ){
129
- [indexSet addIndex: i];
130
131
}
131
- }
132
-
133
- [dbArray removeObjectsAtIndexes: indexSet];
134
-
135
- if (!hasCached && helper) {
136
- LKDBWeakObject *weakObj = [[LKDBWeakObject alloc ] init ];
137
- weakObj.obj = helper;
138
- [dbArray addObject: weakObj];
132
+ [dbArray removeObjectsAtIndexes: indexSet];
133
+
134
+ if (!hasCached && helper) {
135
+ LKDBWeakObject *weakObj = [[LKDBWeakObject alloc ] init ];
136
+ weakObj.obj = helper;
137
+ [dbArray addObject: weakObj];
138
+ }
139
139
}
140
140
141
141
return instance;
@@ -525,16 +525,19 @@ - (NSString *)encryptionKey
525
525
#pragma mark - dealloc
526
526
- (void )dealloc
527
527
{
528
- NSArray *array = [LKDBHelper dbHelperSingleArray ];
529
- @synchronized (array)
530
- {
531
- for (LKDBWeakObject *weakObject in array) {
532
- if ([weakObject.obj isEqual: self ]) {
533
- weakObject.obj = nil ;
528
+ NSMutableArray *dbArray = [LKDBHelper dbHelperSingleArray ];
529
+ @synchronized (dbArray) {
530
+ NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet ];
531
+ for (NSInteger i = 0 ; i < dbArray.count ; i++) {
532
+ LKDBWeakObject *weakObj = [dbArray objectAtIndex: i];
533
+ if (weakObj.obj == self){
534
+ weakObj.obj = nil ;
535
+ [indexSet addIndex: i];
534
536
}
535
537
}
538
+ [dbArray removeObjectsAtIndexes: indexSet];
536
539
}
537
-
540
+
538
541
[self .bindingQueue close ];
539
542
self.usingdb = nil ;
540
543
self.bindingQueue = nil ;
0 commit comments