Dispatch_group_leave сбой в быстрой

Это происходит очень редко. Вот последняя строка трассировки стека:

0  libdispatch.dylib              0x0000000197a85a9c dispatch_group_leave + 48

dispatch_group_leave вызывается в полном замыкании, которое вызывается следующим образом:

  dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
                { () -> Void in
                    let query = HKStatisticsCollectionQuery(quantityType: quantityType,
                        quantitySamplePredicate: nil,
                        options: statisticOptions,
                        anchorDate: anchorDate,
                        intervalComponents: interval)
                    query.initialResultsHandler = {

                        complete()

Итак, мы отправляем в фоновый поток, запускаем HKStatisticsCollectionQuery, а затем вызываем закрытие функционального параметра, называемое полным. Внутри complete вызывается dispatch_group_leave и происходит сбой.

Любые идеи наиболее ценятся! Спасибо!

Ответ 1

Если вызов dispatch_group_leave не сбалансирован с dispatch_group_enter, тогда может произойти сбой.

Ответ 2

В худшем случае, если вы хотите проверить количество введенных значений, вы можете сделать это, следуя патчу

let count = self.groupExecuting.debugDescription.components(separatedBy: ",").filter({$0.contains("count")}).first!.components(separatedBy: CharacterSet.decimalDigits.inverted).filter({Int($0) != nil})