Ответ 1
Если вызов dispatch_group_leave
не сбалансирован с dispatch_group_enter
, тогда может произойти сбой.
Это происходит очень редко. Вот последняя строка трассировки стека:
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 и происходит сбой.
Любые идеи наиболее ценятся! Спасибо!
Если вызов dispatch_group_leave
не сбалансирован с dispatch_group_enter
, тогда может произойти сбой.
В худшем случае, если вы хотите проверить количество введенных значений, вы можете сделать это, следуя патчу
let count = self.groupExecuting.debugDescription.components(separatedBy: ",").filter({$0.contains("count")}).first!.components(separatedBy: CharacterSet.decimalDigits.inverted).filter({Int($0) != nil})