ibireme / YYCache

High performance cache framework for iOS.
MIT License
2.37k stars 505 forks source link

求解。。 #25

Closed HebeTienCoder closed 8 years ago

HebeTienCoder commented 8 years ago

清理磁盘存储的时候,经常会崩溃在这一句。

sqlite3_stmt stmt = (sqlite3_stmt )CFDictionaryGetValue(_dbStmtCache, (__bridge const void *)(sql));

具体在下面这个函数中,报错是Thread34:EXC_BAD_ACCESS

- (sqlite3_stmt *)_dbPrepareStmt:(NSString *)sql { if (![self _dbIsReady]) return NULL; sqlite3_stmt *stmt = (sqlite3_stmt *)CFDictionaryGetValue(_dbStmtCache, (__bridge const void *)(sql)); if (!stmt) { int result = sqlite3_prepare_v2(_db, sql.UTF8String, -1, &stmt, NULL); if (result != SQLITE_OK) { if (_errorLogsEnabled) NSLog(@"%s line:%d sqlite stmt prepare error (%d): %s", __FUNCTION__, __LINE__, result, sqlite3_errmsg(_db)); return NULL; } CFDictionarySetValue(_dbStmtCache, (__bridge const void *)(sql), stmt); } else { sqlite3_reset(stmt); } return stmt; }

ibireme commented 8 years ago

尝试修复了下,但不清楚产生问题的具体原因。

HebeTienCoder commented 8 years ago

我这边也不是每次都出现,出现的时候都是_dbStmtCache为空0x0

ibireme commented 8 years ago

那这个 https://github.com/ibireme/YYCache/commit/3ce0262a158242820e50d13b15d7953d81614f1c 应该能 fix 了。

HebeTienCoder commented 8 years ago

恩恩,感谢!