我正在使用Xcode6 Beta 3在Swift上开发一个iOS8项目,我遇到了一个问题,我可以在一行上打印一个变量,但是那个变量的内容被替换为看似是垃圾。这两个连续的行,它们之间绝对没有其他代码:
println("Data segment 0: \(dataSegments[0])")
println("Data segment 0: \(dataSegments[0])")
打印出不同的值(它们碰巧是NSData数组的元素)。第一个打印出我期望的,但第二个打印出其他东西。
另外,如果我恢复调用我从中获取数据的函数:
println("Data segment 0: \(getCharacteristicData()[0])")
println("Data segment 0: \(getCharacteristicData()[0])")
第一个完全符合我的预期(它打印出与第一个代码块的第一行相同的东西),但第二次通过,getCharacteristicData()崩溃并出现错误的访问错误。同样,这些行是连续的,其间没有其他代码执行。
我一直在使用这种风格输出几周,直到今天都没有任何问题。可能导致这种情况的任何想法?它是Swift的一个错误,还是有一个很好的理由它会破坏我的数据?
编辑:我更新到测试版4.当我使用getCharacteristicData()时,我不再获得错误的访问权限,但第一个代码块仍然存在同样的问题。
更新:事实证明,我的代码中的其他位置出现了单独的内存释放问题,并且使用println()中的变量触发了已分配给它的内存被覆盖。
答案 0 :(得分:0)
这些线条是否在您的示例中直接相继?
如果没有;很有可能你在前几个测试版中碰到了快速array immutability was broken的事实。尝试升级到测试版4。