gpt4 book ai didi

ios - Swift:发布版本中 assertionFailure 的奇怪行为

转载 作者:行者123 更新时间:2023-11-28 11:42:25 24 4
gpt4 key购买 nike

在我看来,assertionFailure 将在发布版本中被忽略。但是当我在 Release模式下运行下面的代码时,assertionFailure 可以运行和停止程序。为什么?

代码

enum MessageType: RawRepresentable {
case news
case unknownMessageType(value: String)

init?(rawValue: String) {
assertionFailure("Tihs assertionFailure will never stop execution")
switch rawValue {
case "A":
self = .news
case "B":
self = .news
case "C":
self = .news
case "D":
self = .news
case "E":
self = .news
case "F":
self = .news
case "G":
self = .news
case "H":
self = .news
case "I":
self = .news
case "J":
self = .news
case "K":
self = .news
case "L":
self = .news
case "M":
self = .news
case "N":
self = .news
case "O":
self = .news
case "P":
self = .news
case "Q":
self = .news
case "R":
self = .news
case "S":
self = .news
case "T":
self = .news
case "U":
self = .news
default:
assertionFailure("This assertionFailure will cause a fatal error and stop execution")
self = .unknownMessageType(value: rawValue)
}
}

var rawValue: String {
switch self {
case .news:
return "A"
case .unknownMessageType(value: let value):
return value
}
}
}

这个语句会导致崩溃let message = MessageType(rawValue: "aaaa"),由第二个 assertionFailure 而不是第一个引起。

另一个奇怪的事情是如果我在函数 init?(rawValue: String),assertionFailure会被忽略,不会有任何crash。PS,我不会禁用发布版本的优化。

2018-11-29编辑

我在 Apple Developer Forum 上发布了一个话题,这似乎是一个编译器错误。

最佳答案

我在 Apple Developer Forum 上发布了一个话题,这似乎是一个编译器错误。

关于ios - Swift:发布版本中 assertionFailure 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53408214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com