发布版本中的Swift链接器错误可通过添加代码来修复 [英] Swift linker error in release build fixable by adding code
问题描述
在Xcode 8中,我的一个Swift项目在Debug模式下工作,但在Release模式下无法链接:
In Xcode 8, a Swift project of mine works in Debug mode but fails to link in Release mode:
Undefined symbols for architecture x86_64:
"Swift.UnsafeMutableBufferPointer.(subscript.materializeForSet : (Swift.Int) -> A).(closure #1)"
我可以通过更改以下行来纠正错误:
I can fix the error by changing this line:
let nextPeriod = currentSchedule.periods.filter({ $0.startDate > now }).sorted(by: { $0.startDate < $1.startDate }).first
收件人:
let nextPeriod = currentSchedule.periods.filter({ $0.startDate > now }).first
但这显然会改变我的应用程序的行为.幸运的是,我还可以通过将以下行添加到几乎所有方法,初始化程序或属性观察器中来修复错误:
but that obviously alters the behavior of my app. Luckily, I can also fix the error by adding the following line to almost any method, initializer, or property observer:
let _ = [""].sorted(by: {$0 < $1})
(我说几乎"是任何一个,因为当添加到我自己定义的enum
类型的属性的属性观察器中时,它似乎无法解决链接器错误.)
(I say "almost" any because it doesn't seem to fix the linker error when added to property observers on properties with enum
types I defined myself.)
...什么?
推荐答案
这是一个编译器错误,已在Xcode 8.1
中修复.
This is a compiler bug, which has been fixed in Xcode 8.1
.
这篇关于发布版本中的Swift链接器错误可通过添加代码来修复的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!