因“函数签名特化 <Arg[0] = Dead>”而崩溃

问题描述

我无法理解收到的崩溃。我特别想知道 sender 是什么意思? didUpdate() 中的 Hardware Model: iphone11,2 Code Type: arm64 Parent Process: [1] Date/Time: 2021-01-23T06:20:16.999Z Launch Time: 2021-01-22T18:46:28Z OS Version: iPhone OS 14.3 (18C66) Exception Type: SIGTRAP Exception Codes: TRAP_BRKPT at 0x100361d60 Crashed Thread: 0 Thread 0 Crashed: 0 App-Name 0x0000000100361d60 function signature specialization <Arg[0] = Dead> of App_Name.SessionViewController.didUpdate(_: App_Name.elapsedtimeSource,interval: Swift.Double) -> () (SessionViewController.swift:0) 1 App-Name 0x000000010065953c App_Name.elapsedtimeSource.(update in _B9C509359F1F9AD84C977E95030096FE)() -> () (elapsedtimeSource.swift:57) 2 App-Name 0x00000001006593d4 App_Name.elapsedtimeSource.start() -> () (elapsedtimeSource.swift:48) 3 App-Name 0x000000010036111c App_Name.SessionViewController.(displayInSession in _1C441B89ACF9824195FFFFDA0A95A40F)(App_Name.Session) -> () (SessionViewController.swift:112) 不知何故死了?

这是报告:

elapsedtimeSource

protocol elapsedtimeSourceDelegate: AnyObject { func didUpdate(_ sender: elapsedtimeSource,interval: TimeInterval) } // Use on the main thread class elapsedtimeSource { var startDate: Date { didSet { if startDate != oldValue { elapsed = Date().timeIntervalSince(startDate) } } } weak private var delegate: elapsedtimeSourceDelegate? private var elapsed: TimeInterval = 0 private var isRunning = false private let interval: TimeInterval init(startDate: Date,delegate: elapsedtimeSourceDelegate,interval: TimeInterval = 1) { self.startDate = startDate self.delegate = delegate self.interval = interval } func start() { if isRunning { return } isRunning = true elapsed = Date().timeIntervalSince(startDate) update() // *** Line 48 *** } func stop() { isRunning = false } private func update() { delegate?.didUpdate(self,interval: elapsed) // *** Line 57 *** let actualElapsed = Date().timeIntervalSince(startDate) let correction = elapsed - actualElapsed dispatchQueue.main.asyncAfter(deadline: .Now() + interval + correction) { [weak self] in guard let self = self else { return } self.elapsed += self.interval if self.isRunning { self.update() } } } } 和完整的委托:

SessionViewController

以及 class SessionViewController: UIViewController { private var elapsedtimeSource: elapsedtimeSource? private func displayInSession(_ session: Session) { if let elapsedtimeSource = elapsedtimeSource { elapsedtimeSource.startDate = session.startTime elapsedtimeSource.start() } else { elapsedtimeSource = elapsedtimeSource(startDate: session.startTime,delegate: self) elapsedtimeSource?.start() // *** Line 112 *** } } } extension SessionViewController: elapsedtimeSourceDelegate { func didUpdate(_ sender: elapsedtimeSource,interval: TimeInterval) { let formatter = DateComponentsFormatter() if interval < 3600 { // Force showing minutes even when time is less than 1 min formatter.allowedUnits = [.second,.minute] } else { formatter.allowedUnits = [.second,.minute,.hour] } formatter.zeroFormattingBehavior = .pad let elapsed = formatter.string(from: interval) ?? "" sessionelapsedtimeLabel.text = elapsed } } 的相关位:

{{1}}

我真的很感激任何学到的输入!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...