0

次のコードがあります。

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

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

    // ... other code here
  }
}

Releaseでプロジェクトをビルドすると、次のエラーが表示されます。

シグナルが原因でコマンドが失敗しました: 中止トラップ: 6

アサーションに失敗しました: (PAI2->use_empty() && "Should not have any uses")、関数 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" を実行中。

このエラーはリリースと Xcode 7 ベータ 5 でのみ発生することに注意してください。コードは Xcode 7 ベータ 4 で機能しました。

デモ: https://github.com/exchangegroup/add-callback-demo-ios

Swift のバグのように見えますか? Apple にバグレポートを提出しました。

アップデート

この問題は、Xcode 7.0 ベータ 6 (7A192o) で解決されました。

4

1 に答える 1

1

私はこれと同じ問題を抱えていました (ベータ 5 のみ)。

addCallbackクロージャーの配列にクロージャーを追加しようとしていた場所でした。クラスにメソッドがある場合と同じように見えますMyClass

ばかげていますが、このコードを変更することで、リリース時にビルドすることができました。

callbacks.append(newCallback)

これに

callbacks = callbacks + [newCallback]

于 2015-08-12T01:55:24.637 に答える