Assertion failed: (currentSyncQueue != self && "inDatabase: was called reentrantly on the same queue, which would lead to a deadlock")

这种情况一般会出现在 在队列的inDatabaseinTransactionblock里调用了该队列的inDatabaseinTransaction方法这种嵌套。如果你想在第一个任何完成后执行另一个任务,可以拿blockdb参数继续下去。


在使用时,如果在queue里面的block执行过程中,又调用了 indatabase方法,则会检查 是不是同一个queue,如果是同一个queue会死锁;原因很简单:

队列里面 放了一个block,该block又在 本队列 后面放了一个 block

从而:前一个block 里面 调用了 后一个block,必须等后一个block执行完成了,

前一个block才会 出队列;

而后一个block想要执行,则又必须先等 前一个block出队列;

因此 死锁!!!!

解决方法:在indatabaseblock中,不要再调用indatabase方法