cocos creator 2.0.10版本
在ios端 localStorageSetItem 这个接口偶发性报错【概率极高】,一旦报错后,所有本地数据无法成功写入,会持续报错。
错误信息为:Error in localStorage.setItem()
我检查了一下源码:日志是在localStorage.cpp下打印的
if( ok != SQLITE_OK && ok != SQLITE_DONE)
printf(“Error in localStorage.setItem()\n”);
我们把所有的key value 输出,在出错时,和出错前,也没有发现任何异常调用
跟踪堆栈,发现 sqlite的状态为 SQLITE_BUSY
再跟踪了一下,发现cc.game.restart(); 之后 localStorageFree 有bug,导致数据库没有被正确关闭
需要在 close 之前 加三句代码
sqlite3_finalize(_stmt_clear);
sqlite3_finalize(_stmt_key);
sqlite3_finalize(_stmt_count);
上线后依然有bug,ios 3.8.1