在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
为:
let nextPeriod = currentSchedule.periods.filter({ $0.startDate > now }).first
但这显然会改变我的应用的行为。幸运的是,我还可以通过将以下行添加到几乎任何方法,初始化程序或属性观察器来修复错误:
let _ = [""].sorted(by: {$0 < $1})
(我说“几乎”任何一个,因为在我自己定义的enum
类型的属性上添加到属性观察者时似乎没有修复链接器错误。)
...什么?
答案 0 :(得分:1)
起初我认为奇怪的代码苹果插入少数几个可比较的东西...但是当我添加它时没有用。有效的方法是将优化级别降低到:快速,单个文件优化 他们搞砸了这个xcode版本,故事板也有很大的问题。
答案 1 :(得分:1)
这是一个编译器错误,已在Xcode 8.1
中修复。
答案 2 :(得分:0)
迁移到Swift 3时遇到同样的问题。
我通过让调用代码的对象继承自NSObject来实现它。