gpt4 book ai didi

Swift:使用 Array 或 Slice 类型参数的 Join 方法在 Release 配置中崩溃

转载 作者:可可西里 更新时间:2023-11-01 02:28:04 26 4
gpt4 key购买 nike

我在 Swift 中有以下(简化的)代码,它在调试配置中运行良好:

import Foundation

let charSlice = Array("Any string at all")
println( charSlice )
let str1 = "".join(charSlice.map{"\($0)"})
println (str1)

这会产生以下输出(如预期的那样):

[A, n, y,  , s, t, r, i, n, g,  , a, t,  , a, l, l]
Any string at all
Program ended with exit code: 0

如果我随后将构建配置更改为 Release模式,我会收到运行时错误:

EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

在调用 "".join

我做错了什么或者这值得作为错误报告吗?

最佳答案

[在 XCode Beta 6 上测试]

这似乎是编译器在Release模式下生成的优化代码中的一个bug。如果将 Release模式优化级别更改为无(build设置 > Swift 编译器 - 代码生成 > 优化级别),问题就会消失。

有趣的是,.join() 不会因 null 和空字符串而失败,我假设是因为该方法专门检查它们作为性能优化。

var baseString = ","
baseString.join([]) // works
baseString.join([""]) // works
baseString.join(["a"]) // fails

请随时将此报告为错误。

关于Swift:使用 Array<Character> 或 Slice<Character> 类型参数的 Join 方法在 Release 配置中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25593217/

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