次のコードがあります。
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) で解決されました。