微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决因“函数签名特化 <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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?