【发布时间】:2014-12-29 19:32:00
【问题描述】:
当 Swift 优化级别 设置为 None [-Onone](调试的默认值)时,以下(有些人为的)代码可以工作:
let nsa = NSArray(array: ["foo", "bar"])
let a = nsa as [String]
但是当设置为 Fastest [-O](发布的默认值)时,应用程序在运行时崩溃 (crash log)。
我很幸运地发现我可以通过这样做来解决这个问题:
let a = nsa as [AnyObject] as [String]
我的问题有两个:
- 您能帮我理解为什么会这样吗?
- 有没有更好的方法将 NSArray 转换为 Array?
更新
这似乎是一个错误。我没有向苹果报告。如果其他人愿意花时间这样做,请这样做!
【问题讨论】:
-
旁注:将 NSMutableArray 转换为 Array 的类似情况:dev.eltima.com/post/96538497489/…
-
“休息”是什么意思?产生了哪些消息?
-
@HotLicks 应用程序在访问该代码时崩溃。嗯……让我找出来……请稍等……
-
@HotLicks 好的,我添加了崩溃日志的链接。
-
今天的 Xcode 6.2 版本仍然存在问题。非常感谢您找到的解决方法。在我们的例子中,我发现当我们在声明后面添加
NSLog("%@", nsa)(继续你的例子)时,它会很有趣。但是,一旦删除该行,它就崩溃了。 stackoverflow.com/questions/29003323/…