由于Swift 2.0我遇到了问题,如果定义了每行只有一个全局变量,那么定义全局变量只能正常工作。使用局部变量没有这样的问题。在Swift 1.0中,这种方法运行良好,但Apple发生了一些变化。
示例:
var x1: Int = 0
var y1: Int = 0
var z1: Int = 0
func Test1 ()
{
x1 = 30
y1 = 20
z1 = 10
}
var x2: Int = 0, y2: Int = 0, z2: Int = 0
func Test2 ()
{
x2 = 30
y2 = 20
z2 = 10
}
func main_program ()
{
Test1()
Test2()
print("x1=\(x1), y1=\(y1), z1=\(z1)\n")
print("x2=\(x2), y2=\(y2), z2=\(z2)\n")
}
当你现在调用main_program时,你会得到
x1=30, y1=20, z1=10
x2=0, y2=0, z2=10
终端中的。但是这两行应该是相同的,并且与Swift 1.0是一致的
所以我不得不改变我的所有程序,只在一行中定义一个全局变量。如果变量是某些公式的一部分,您将获得一些有趣的结果,而不仅仅是零。
这是Swift中的错误还是有这种行为的严重背景?
答案 0 :(得分:4)
Xcode 7 beta 6中的已知问题 - Swift 2.0和Objective-C
在单个
var
或let
中声明多个全局变量可能会导致其值的损坏。 (22207407)解决方法:使用单独的var
或let
声明每个变量。