0

我有以下代码。

class MyClass {
  private var callbacks: [()->()] = []

  func doIt(callback: (()->())?) {
    if let callback = callback {
      callbacks.append(callback)
    }

    // ... other code here
  }
}

当我在 Release 中构建项目时,它显示以下错误:

由于信号,命令失败:中止陷阱:6

断言失败:(PAI2->use_empty() && "不应有任何用途"),函数 foldInverseReabstractionThunks,文件 /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-700.0.52.2/src/swift/lib /SILPasses/SILCombinerVisitors.cpp,第 549 行。

在 SILFunction "@TFC11AddCallback7MyClass4doItfS0_FGSqFT_T__T" 上运行 SILFunctionTransform "SIL Combine" 时。

请注意,该错误仅出现在Release中,并且仅出现在 Xcode 7 beta 5 中。该代码在 Xcode 7 beta 4 中有效。

演示:https ://github.com/exchangegroup/add-callback-demo-ios

看起来像 Swift 中的错误?向 Apple 提交了错误报告。

更新

该问题已在 Xcode 7.0 beta 6 (7A192o) 中得到解决。

4

1 回答 1

1

我遇到了同样的问题(仅限 beta 5)。

这是我试图将闭包附加到闭包数组的地方,它看起来与你的类中的addCallback方法相同MyClass

尽管它很愚蠢,但我通过更改此代码来构建发布版本:

callbacks.append(newCallback)

对此

callbacks = callbacks + [newCallback]

于 2015-08-12T01:55:24.637 回答