发布版本中的Swift链接器错误可通过添加代码来修复 [英] Swift linker error in release build fixable by adding code

查看:80
本文介绍了发布版本中的Swift链接器错误可通过添加代码来修复的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆