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

Mic*_*bro 11 xcode swift xcode11.4

我不知道为什么,但我的代码在这个 $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)
Run Code Online (Sandbox Code Playgroud)

我有错误

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

tot*_*ter 1

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


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