在 Xcode 8 中,我的一个 Swift 项目在调试模式下工作,但在发布模式下无法链接:
Undefined symbols for architecture x86_64:
"Swift.UnsafeMutableBufferPointer.(subscript.materializeForSet : (Swift.Int) -> A).(closure #1)"
我可以通过更改此行来修复错误:
let nextPeriod = currentSchedule.periods.filter({ $0.startDate > now }).sorted(by: { $0.startDate < $1.startDate }).first
to:
let nextPeriod = currentSchedule.periods.filter({ $0.startDate > now }).first
但这显然改变了我的应用程序的行为。幸运的是,我还可以通过将以下行添加到几乎任何方法、初始化程序或属性观察器来修复错误:
let _ = [""].sorted(by: {$0 < $1})
(我说“几乎”任何,因为当添加到属性上的属性观察器时,它似乎没有修复链接器错误enum
我自己定义的类型。)
...What?
我使用时遇到了同样的问题sorted(by:
我正在迁移到 Swift 3 的一个项目中的方法。
这似乎是编译器中的一个错误,我发现了以下参考文献:
-
Swift 2.1 错误排序,仅在发布版本上 https://stackoverflow.com/questions/33444460/swift-2-1-error-sorting-in-place-only-on-release-builds/33614211(旧的 Xcode/Swift 版本中存在同样的问题)
-
https://forums.developer.apple.com/thread/63213 https://forums.developer.apple.com/thread/63213(Xcode 8 上的问题)
目前,唯一对我有用的解决方法是将 swift 编译器优化级别更改为None
在构建设置上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)