jes*_*tro 12 closures ios swift healthkit
这很少发生.这是堆栈跟踪的最后一行:
0 libdispatch.dylib 0x0000000197a85a9c dispatch_group_leave + 48
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
所以我们调度到后台线程,运行HKStatisticsCollectionQuery,然后调用一个名为complete的函数参数闭包.内部完成是调用dispatch_group_leave并发生崩溃的地方.
任何想法都非常感谢!谢谢!
mus*_*afa 19
如果dispatch_group_leave
呼叫不平衡,dispatch_group_enter
则可能发生崩溃.
小智 6
在最坏的情况下,您可以count
通过其debugDescription
字符串检查折扣组:
let count = self.groupExecuting.debugDescription.components(separatedBy: ",").filter({$0.contains("count")}).first!.components(separatedBy: CharacterSet.decimalDigits.inverted).filter({Int($0) != nil})
assert(count.first != "0")
Run Code Online (Sandbox Code Playgroud)
在这个问题中进一步探讨了这个策略:DispatchGroup:检查有多少“进入”
归档时间: |
|
查看次数: |
5352 次 |
最近记录: |