我更新了Swift 3的代码,在设备上运行,一切正常,但是当我存档项目时,在清理和删除交付的数据后,我有错误"由于信号分割故障11命令失败"
我的日志0 swift 0x000000010a5ffb6d PrintStackTraceSignalHandler(void*) + 45
1 swift 0x000000010a5ff5b6 SignalHandler(int) + 470
2 libsystem_platform。Dylib 0x00007fff9560152a _sigtramp + 26
3 libsystem_platform。Dylib 0x00007fff5825ab50 _sigtramp + 3267728960
4 swift 0x0000000107d29432 swift::CastOptimizer:: optimizeuconditionalcheckedcastaddrinst (swift::UnconditionalCheckedCastAddrInst*) + 1554
5 swift 0x0000000107db144d processFunction(swift::SILFunction&, bool, unsigned int) + 1901
6 swift 0x0000000107db7f9f(匿名命名空间)::ConstantPropagation::run() + 47
7 swift 0x0000000107d4862d swift::SILPassManager::runOneIteration() + 6077
8 swift 0x0000000107d4d7d6 swift::runSILOptimizationPasses(swift::SILModule&) + 3462
9 swift 0x0000000107a153cb performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef, int&, swift::FrontendObserver*) + 20107
10 swift 0x0000000107a0e265 swift::performFrontend(llvm::ArrayRef, char const*, void*, swift::FrontendObserver*) + 17029
11 swift 0x00000001079cb82d main + 8685
12 libdyld。Dylib 0x00007fff8936c5ad start + 1
13 libdyld。Dylib 0x000000000000006d start + 1992899265堆栈溢出:
和
- 运行pass #1059521 SILFunctionTransform "Constant Propagation" on SILFunction "@_TTSg5VSC29UIApplicationLaunchOptionsKeyS_s8Hashable5UIKit_P__CSo8NSObjectS2_S0_10ObjectiveC_Ps9AnyObject____TFs17_dictionaryUpCastu2_Rxs8Hashable0_S_rFGVs10Dictionaryxq__GS0_q0_q1__".
有人可以帮助或告诉,我应该在哪里搜索bug?
在我的情况下,我将launchOptions作为函数参数传递给另一个类
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
迁移到Swift 3后,迁移者添加了cast来匹配等待参数的类型,该类型为[NSObject : AnyObject]?
(Swift 3之前)
我所要做的就是更新我的自定义函数,以[UIApplicationLaunchOptionsKey: Any]
为参数并删除错误的强制转换。就这么简单
我不需要妥协任何优化级别(这甚至不应该是开发人员的最后手段,这绝对不是解决编译器错误/分段错误的方法)。删除cast后,swift的整个模块优化工作正常