【问题标题】:Compilation error in Release in Xcode 7 beta 5 in Swift codeSwift 代码中 Xcode 7 beta 5 版本中的编译错误
【发布时间】:2015-10-30 12:59:26
【问题描述】:

我有以下代码。

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

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

    // ... other code here
  }
}

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

由于信号而导致命令失败:中止陷阱: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) 中得到解决。

【问题讨论】:

  • AFAIK Xcode 7 Beta 5 中有几个(新)错误。 El Capitan 已经有一个(官方的)解决方法来让它运行。很快就会发布下一个版本。

标签: xcode swift xcode7-beta5


【解决方案1】:

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

这是我试图将一个闭包附加到一组闭包的地方,它看起来和你的一样,你的 MyClass 类中有一个 addCallback 方法。

虽然很傻,但我通过更改此代码来构建发布版本:

callbacks.append(newCallback)

到这里

callbacks = callbacks + [newCallback]

【讨论】:

  • 有趣的是,append 函数会改变现有数组,而您的解决方法会创建一个新数组。看起来该错误仅在您更改回调数组时才显示。
  • 这在 Beta 6 中已修复,我能够将代码改回使用 append 并且编译正常。
猜你喜欢
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
  • 2015-09-14
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
相关资源
最近更新 更多