WCDBSwift getObjects 偶发性崩溃解决

WCDB getObjects偶发性崩溃解决

引入WCDBSwift 后, 运行时偶发崩溃, 经过手动前往路径删除库文件,再次进入APP时复现崩溃率达到70%以上.
最开始以为是代码问题, 增删查改,多线程并发,for循环调用,事务,链式调用,圈尝试一遍, 依然崩溃.
后来觉得是线程并发问题,将所有数据库操作在主线程中调用,发现崩溃率下降,但是依然崩溃.
继续断点调试,发现 打断点在viewdidload 之后, 数据库加载之前, 只要有断点停顿 就不崩溃. 同理,再代码中加入1sAfter 也解决了问题. 不靠谱啊
然后觉得是不是操作频繁导致的并发问题, 将所有插入查询代码删除.模型删除.创建最基本的demo 模型 只存入1条数据,查询一条数据.
依然崩溃.
….

….
….
最后 我看到崩溃之前出现的log
One of the two will be used. Which one is undefined.
每次都会先出现这么个一个玩意才崩溃.
这意思是这个东西出现了两次??
全局搜索发现没有重名类 , 而且是运行时错误.
运行时 . 这个模型对象出现了两次?
好像距离真像越来越近了
WCDB 是基于oc 运行时机制的
WCDB -> 链接持有一份 model 模型
Framework 链接进入主程序时 链接一份 model 模型.
这个时候如果出现同时操作 runtime 会获取到两份 model 对象..
产生歧义,崩溃.

总结. 如果项目中有这种引用第三方库是基于oc运行时的,产生了偶发性的崩溃,检查一下引入顺序, 如果在主程序包中引用了,就不要重复引用到开发包,避免重复引用 产生这种不好查找的还会引发crash的bug 不解决还不行 , 真的浪费时间
Swift getObjects Crash · Issue #653 · Tencent/wcdb · GitHub 昨天夜里1点提的 issuse , tx还没给我答复 今天自己解决了 . 记录一下

Swift

你可能感兴趣的:(WCDBSwift getObjects 偶发性崩溃解决)