Xcode 11.4 测试版在@Published属性订阅上崩溃。这是怎么回事?



我不知道为什么,但我的代码在这个$searchTerm发布者上崩溃了。我的代码中有很多这样的发布者,其他一切正常。它不仅在这个新的Xcode版本中不起作用,并且在以前的版本中工作。如果我评论这一行并将其替换为 _searchTerm.projectedValue,它将开始照常工作!

_searchTerm.projectedValue
//$searchTerm
.debounce(for: .milliseconds(350), scheduler: DispatchQueue.global())
.flatMap { term in
self.search(by: term)
}
.print("searching")
.receive(on: DispatchQueue.main)
.assign(to: .results, on: self)
.store(in: &disposables)

我有错误

致命错误:调用已删除的方法

如果searchTerm是在您的类或其超类中声明的内容,则将其标记为final。根据我的经验,这一直可以解决此问题。


我的理论是,Swift 无法确定查找表中的哪个字段$searchTerm引用,因此崩溃了。如果 as,将其标记为final将使其静态调度。我不确定这是否属实,如果有人对主题有更多了解,请发表评论,我会更新我的答案。

最新更新