dispatch_call_block_and_release
GCD is used in your app. So.. Bring more detail-info please? code where it's occurred? May be you need copy block vs retain, may be you need use __block vars correctly. May be something else. Obviously, your object had been captured by block is released and deallocated when happens queue_drain, and after that you call method of the object in other scope, or in the block scope.
死锁问题
我的是将 串行队列DISPATCH_QUEUE_SERIAL 改并行DISPATCH_QUEUE_PRIORITY_DEFAULT