Swift 1.2 BAD_EXEC_ACCESS 启动时

Swift 1.2 BAD_EXEC_ACCESS on startup

我在 Swift/SpriteKit/MacOS 中有一个简单的应用程序,我用它来学习 Swift。它主要处理文本文件 - 我很高兴地说,Swift 非常擅长。

我下载了 1.2 和 运行 转换器,它建议更改一行代码:

NSApplicationMain(C_ARGC, C_ARGV)

必须变成:

NSApplicationMain(Process.argc, Process.unsafeArgv)

现在,当我 运行 应用程序崩溃时,该行出现 BAD_EXEC_ACCESS。堆栈似乎没有显示任何有趣的东西;它似乎很早就崩溃了。

我在行上放置了一个断点并 PO 了输入:

["/Development/PAIS/DerivedData/PAIS/Build/Products/Debug/PAIS.app/Contents/MacOS/PAIS", "-NSDocumentRevisionsDebugMode", "YES"]

看起来没什么异常。

我发现 Xcode 时不时会因为缓存的数据而发出嘶嘶声。尝试关闭 Xcode,删除 "DerivedData" 文件夹并重新打开 Xcode。然后它将重新索引所有内容,希望这可以解决您的问题。

好的,我希望这能为其他人节省一些时间。问题是 fullName.componentsSeparatedByString,它有一个错误,它会在 Obj-C 端释放字符串并导致在下一个 GC 循环中重复释放。使用 split(striped!, { [=11=] == " "}, maxSplit: Int.max, allowEmptySlices: false) 代替,尽管这显然要慢得多。