我已经看到了很多关于此事的问题,但我仍然对于发生的事情感到困惑。
我 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问题,并且在我用探查器测试这个应用程序之前长出一个长长的灰胡子。
它还有一段时间才能发布,但我希望很早就能在发布模式下测试我的应用程序。
答案 0 :(得分:0)
行。这是我发现的。
我有一组元组作为变量:
var arrayOfTuples:[(greeting: String, query: String)]! = []
我使用+ =和单个元素数组附加它,如下所示:
arrayOfTuples += [(greeting: "HI", query: "HOWAYA")]
这在调试模式下工作和编译很好,但在发布模式下导致了奇怪的错误。
我通过将“+ =”替换为“.append()”来修复它,如下所示:
arrayOfTuples.append((greeting: "HI", query: "HOWAYA"))
去图。无论如何,追加更合适,所以优秀的编码实践占上风。