使用NSUserDefaults时Swift中的奇怪编译错误

时间:2015-06-27 21:27:25

标签: ios swift compiler-errors release

我已经看到了很多关于此事的问题,但我仍然对于发生的事情感到困惑。

HATE 指责语言或编译器,但是,使用Swift,它有一定的可能性。

当我在调试模式下构建并运行时,一切都与世界一致。

但是,当我在发布模式下编译时,编译器会遇到这个错误:

"Bitcast requires both operands to be pointer or neither"...Yadda, yadda

违规行似乎是这一行:

let lastURI:AnyObject? = NSUserDefaults.standardUserDefaults().valueForKey(s_currentURIKey)

It's right here,如果你想跟随你的教科书(它是一个开源项目)。

如果我注释掉这条线(以及它下方的7条线),那么阳光普照,鸟儿高兴地发出推文。如果我把它留下来,那么来自魔多的乌云和成群的兽人就会喷出来。

为了使其失败,我只需运行在发布模式下编译的探查器。

任何人都有过这种agita的经历吗?

此问题的所有其他版本都倾向于解决特定Cocoa API调用的问题。我不清楚用户是否有过错。

我真的希望这是我的错,这意味着我可以做些什么。

如果不是我的错,那么我需要提出一个RADAR问题,并且在我用探查器测试这个应用程序之前长出一个长长的灰胡子。

它还有一段时间才能发布,但我希望很早就能在发布模式下测试我的应用程序。

1 个答案:

答案 0 :(得分:0)

行。这是我发现的。

我有一组元组作为变量:

var arrayOfTuples:[(greeting: String, query: String)]! = []

我使用+ =和单个元素数组附加它,如下所示:

arrayOfTuples += [(greeting: "HI", query: "HOWAYA")]

这在调试模式下工作和编译很好,但在发布模式下导致了奇怪的错误。

我通过将“+ =”替换为“.append()”来修复它,如下所示:

arrayOfTuples.append((greeting: "HI", query: "HOWAYA"))

去图。无论如何,追加更合适,所以优秀的编码实践占上风。