我正在实现一个小部件扩展,当完成句柄被调用时它会随机崩溃。抛出异常
"-[NSConcreteFileHandle fileDescriptor]: Invalid argument"
这是我的实现:
func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
let countArticles = self.countArticles(dependingOn: context.family)
self.backendService.fetchArticles(countArticles: countArticles) { [weak self] (result) in
let secondsUntilNextRefresh = TimeInterval(10 * 60)
let dateToInvokeNextRefresh = Date().addingTimeInterval(secondsUntilNextRefresh)
let timelineEntries = TimelineMapper().mapArticlesResultToTimelineEntry(result)
let timeline = Timeline(entries: timelineEntries,
policy: .after(dateToInvokeNextRefresh))
DispatchQueue.main.async {
completion(timeline)
}
}
}
Run Code Online (Sandbox Code Playgroud)
和堆栈跟踪
#0 0x00007fff20177f48 in objc_exception_throw ()
#1 0x00007fff2078b731 in _NSFileHandleRaiseOperationExceptionWhileReading ()
#2 0x00007fff2078adb1 in _NSFileHandleRaiseOperationException ()
#3 0x00007fff2078ada6 in -[NSConcreteFileHandle fileDescriptor] ()
#4 0x00007fff55c32ad4 in FileArchiveWriter.appendBytes(_:size:) ()
#5 0x00007fff55c32d06 in FileArchiveWriter.append<A>(_:) ()
#6 0x00007fff55c3222f in ArchiveWriter.addAttachment(data:) ()
#7 0x00007fff55c34086 in Encoder.encodeAttachedValue<A>(key:data:) ()
#8 0x00007fff55ff0a96 in CodableCGImage.encode(to:) ()
#9 0x00007fff55ff0eed in protocol witness for Encodable.encode(to:) in conformance CodableCGImage ()
#10 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#11 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#12 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#13 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#14 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#15 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#16 0x00007fff55a81c02 in GraphicsImage.encode(to:) ()
#17 0x00007fff55a826e9 in protocol witness for Encodable.encode(to:) in conformance GraphicsImage ()
#18 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#19 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#20 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#21 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#22 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#23 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#24 0x00007fff560b0669 in DisplayList.Content.Value.encode(to:) ()
#25 0x00007fff56005d6d in protocol witness for Encodable.encode(to:) in conformance DisplayList.Content.Value ()
#26 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#27 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#28 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#29 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#30 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#31 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#32 0x00007fff56006159 in DisplayList.Content.encode(to:) ()
#33 0x00007fff56006341 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Content ()
#34 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#35 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#36 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#37 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#38 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#39 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#40 0x00007fff560af5d8 in DisplayList.Item.Value.encode(to:) ()
#41 0x00007fff56005ce9 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item.Value ()
#42 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#43 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#44 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#45 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#46 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#47 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#48 0x00007fff560afaef in DisplayList.Item.encode(to:) ()
#49 0x00007fff56005d39 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item ()
#50 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#51 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#52 0x00007fff536a39b7 in _PlistUnkeyedEncodingContainer.encode<A>(_:) ()
#53 0x00007fff536a4b49 in protocol witness for UnkeyedEncodingContainer.encode<A>(_:) in conformance _PlistUnkeyedEncodingContainer ()
#54 0x00007fff2f0ecf88 in Array<A>.encode(to:) ()
#55 0x00007fff2f0ed0e8 in protocol witness for Encodable.encode(to:) in conformance <A> [A] ()
#56 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#57 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#58 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#59 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#60 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#61 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#62 0x00007fff560af15e in DisplayList.encode(to:) ()
#63 0x00007fff56005cc1 in protocol witness for Encodable.encode(to:) in conformance DisplayList ()
#64 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#65 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#66 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#67 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#68 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#69 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#70 0x00007fff560af5d8 in DisplayList.Item.Value.encode(to:) ()
#71 0x00007fff56005ce9 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item.Value ()
#72 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#73 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#74 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#75 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#76 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#77 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#78 0x00007fff560afaef in DisplayList.Item.encode(to:) ()
#79 0x00007fff56005d39 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item ()
#80 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#81 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#82 0x00007fff536a39b7 in _PlistUnkeyedEncodingContainer.encode<A>(_:) ()
#83 0x00007fff536a4b49 in protocol witness for UnkeyedEncodingContainer.encode<A>(_:) in conformance _PlistUnkeyedEncodingContainer ()
#84 0x00007fff2f0ecf88 in Array<A>.encode(to:) ()
#85 0x00007fff2f0ed0e8 in protocol witness for Encodable.encode(to:) in conformance <A> [A] ()
#86 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#87 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#88 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#89 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#90 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#91 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#92 0x00007fff560af15e in DisplayList.encode(to:) ()
#93 0x00007fff56005cc1 in protocol witness for Encodable.encode(to:) in conformance DisplayList ()
#94 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#95 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#96 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#97 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#98 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#99 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#100 0x00007fff560af5d8 in DisplayList.Item.Value.encode(to:) ()
#101 0x00007fff56005ce9 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item.Value ()
#102 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#103 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#104 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#105 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#106 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#107 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#108 0x00007fff560afaef in DisplayList.Item.encode(to:) ()
#109 0x00007fff56005d39 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item ()
#110 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#111 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#112 0x00007fff536a39b7 in _PlistUnkeyedEncodingContainer.encode<A>(_:) ()
#113 0x00007fff536a4b49 in protocol witness for UnkeyedEncodingContainer.encode<A>(_:) in conformance _PlistUnkeyedEncodingContainer ()
#114 0x00007fff2f0ecf88 in Array<A>.encode(to:) ()
#115 0x00007fff2f0ed0e8 in protocol witness for Encodable.encode(to:) in conformance <A> [A] ()
#116 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#117 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#118 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#119 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#120 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#121 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#122 0x00007fff560af15e in DisplayList.encode(to:) ()
#123 0x00007fff56005cc1 in protocol witness for Encodable.encode(to:) in conformance DisplayList ()
#124 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#125 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#126 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#127 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#128 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#129 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#130 0x00007fff560af5d8 in DisplayList.Item.Value.encode(to:) ()
#131 0x00007fff56005ce9 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item.Value ()
#132 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#133 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#134 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#135 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#136 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#137 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#138 0x00007fff560afaef in DisplayList.Item.encode(to:) ()
#139 0x00007fff56005d39 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item ()
#140 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#141 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#142 0x00007fff536a39b7 in _PlistUnkeyedEncodingContainer.encode<A>(_:) ()
#143 0x00007fff536a4b49 in protocol witness for UnkeyedEncodingContainer.encode<A>(_:) in conformance _PlistUnkeyedEncodingContainer ()
#144 0x00007fff2f0ecf88 in Array<A>.encode(to:) ()
#145 0x00007fff2f0ed0e8 in protocol witness for Encodable.encode(to:) in conformance <A> [A] ()
#146 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#147 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#148 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#149 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#150 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#151 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#152 0x00007fff560af15e in DisplayList.encode(to:) ()
#153 0x00007fff56005cc1 in protocol witness for Encodable.encode(to:) in conformance DisplayList ()
#154 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#155 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#156 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#157 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#158 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#159 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#160 0x00007fff560af5d8 in DisplayList.Item.Value.encode(to:) ()
#161 0x00007fff56005ce9 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item.Value ()
#162 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#163 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#164 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#165 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#166 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#167 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#168 0x00007fff560afaef in DisplayList.Item.encode(to:) ()
#169 0x00007fff56005d39 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item ()
#170 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#171 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#172 0x00007fff536a39b7 in _PlistUnkeyedEncodingContainer.encode<A>(_:) ()
#173 0x00007fff536a4b49 in protocol witness for UnkeyedEncodingContainer.encode<A>(_:) in conformance _PlistUnkeyedEncodingContainer ()
#174 0x00007fff2f0ecf88 in Array<A>.encode(to:) ()
#175 0x00007fff2f0ed0e8 in protocol witness for Encodable.encode(to:) in conformance <A> [A] ()
#176 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#177 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#178 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#179 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#180 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#181 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#182 0x00007fff560af15e in DisplayList.encode(to:) ()
#183 0x00007fff56005cc1 in protocol witness for Encodable.encode(to:) in conformance DisplayList ()
#184 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#185 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#186 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#187 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#188 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#189 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#190 0x00007fff560af5d8 in DisplayList.Item.Value.encode(to:) ()
#191 0x00007fff56005ce9 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item.Value ()
#192 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#193 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#194 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#195 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#196 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#197 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#198 0x00007fff560afaef in DisplayList.Item.encode(to:) ()
#199 0x00007fff56005d39 in protocol witness for Encodable.encode(to:) in conformance DisplayList.Item ()
#200 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#201 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#202 0x00007fff536a39b7 in _PlistUnkeyedEncodingContainer.encode<A>(_:) ()
#203 0x00007fff536a4b49 in protocol witness for UnkeyedEncodingContainer.encode<A>(_:) in conformance _PlistUnkeyedEncodingContainer ()
#204 0x00007fff2f0ecf88 in Array<A>.encode(to:) ()
#205 0x00007fff2f0ed0e8 in protocol witness for Encodable.encode(to:) in conformance <A> [A] ()
#206 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#207 0x00007fff536a0f98 in __PlistEncoder.box_<A>(_:) ()
#208 0x00007fff536a22c9 in _PlistKeyedEncodingContainer.encode<A>(_:forKey:) ()
#209 0x00007fff536a33e5 in protocol witness for KeyedEncodingContainerProtocol.encode<A>(_:forKey:) in conformance _PlistKeyedEncodingContainer<A> ()
#210 0x00007fff2f0ddae7 in _KeyedEncodingContainerBox.encode<A, B>(_:forKey:) ()
#211 0x00007fff2f0d4a74 in KeyedEncodingContainer.encode<A>(_:forKey:) ()
#212 0x00007fff560af15e in DisplayList.encode(to:) ()
#213 0x00007fff56005cc1 in protocol witness for Encodable.encode(to:) in conformance DisplayList ()
#214 0x00007fff2f381907 in dispatch thunk of Encodable.encode(to:) ()
#215 0
我在实施中发现了一个问题BackendService。为了确保对于两个或多个后续调用,getTimeline()仅调用一个请求,我对完成处理程序进行了排队。这确保了请求完成后调用所有完成处理程序。我从未注意到任何问题,因为调试时调用的次数getTimeline()始终与处理程序调用的次数匹配。completion当时间线在传递后重新加载时,一定会发生崩溃,dateToInvokeNextRefresh因为在这种情况下,completion传递到的实际处理程序getTimeline() 和先前排队的完成处理程序已被调用。确保请求完成后释放所有完成处理程序解决了我的问题,并且崩溃现在消失了。
另一件值得一提的是,崩溃也可能与自定义字体有关。我发现这篇文章iOS 14 Widget is flickering or freeze, chronod crashing描述了与我的类似的崩溃堆栈跟踪。
| 归档时间: |
|
| 查看次数: |
1034 次 |
| 最近记录: |