ios – 发布方案编译时的Swift 1.2分段错误

我刚刚升级Swift 1.2,当我尝试使用Release方案编译iOS应用程序时,我收到“分段错误:11”.

0  swift                    0x00000001105a9a08 llvm::sys::printstacktrace(__sFILE*) + 40
1  swift                    0x00000001105a9ee4 SignalHandler(int) + 452
2  libsystem_platform.dylib 0x00007fff9a724f1a _sigtramp + 26
3  libsystem_platform.dylib 0x00007fff4fd6f6b0 _sigtramp + 3043272624
4  swift                    0x00000001100e837a (anonymous namespace)::DCE::markControllingTerminatorsLive(swift::SILBasicBlock*) + 346
5  swift                    0x00000001100e8109 (anonymous namespace)::DCE::markValueLive(swift::ValueBase*) + 201
6  swift                    0x00000001100e791f (anonymous namespace)::DCE::run() + 1983
7  swift                    0x000000011008f55e swift::SILPassManager::runFunctionPasses(llvm::ArrayRef<swift::SILFunctionTransform*>) + 1310
8  swift                    0x000000011008ffe9 swift::SILPassManager::runOneIteration() + 633
9  swift                    0x000000011008ea56 swift::runSILOptimizationPasses(swift::SILModule&) + 790
10 swift                    0x000000010fe92ee7 frontend_main(llvm::ArrayRef<char const*>,char const*,void*) + 4695
11 swift                    0x000000010fe91ae6 main + 1814
12 libdyld.dylib            0x00007fff995665c9 start + 1

当我使用Dev / Debug方案时,应用程序编译并运行完美.

我已将编译器问题缩小到单个文件和几行代码.

let directPhoneType = PhoneNumber.Codes.Contacts["D"]
phoneTypes = phoneTypes.filter { $0 != directPhoneType }

我已经尝试更改过滤代码(使用“element in”等),但每次尝试都会导致分段错误.我们的应用程序中还有其他过滤逻辑可编译.

如果我删除过滤代码或将其更改为手动过滤手机类型的循环,则应用程序在Release方案中运行正常.

我已经尝试将优化级别设置为“最快,未选中”或“最快”,但仍然会发生分段错误.如果我将优化级别设置为“无”;该项目建设.

在这两个方案中,此代码在Swift 1.2之前运行良好.

任何人都对这里发生的事情有任何见解?

更新:看起来Xcode 6.3.1修复了我的seg故障问题.

解决方法

遇到同样的问题,没有类似于你的代码.关闭整个模块优化(认情况下是关闭的)解决了我的问题,这意味着我仍然可以使用最快的优化设置进行存档.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...