如何在swift中修改闭包中的全局变量?

问题描述:

如何在Swift中修改闭包中的值或至少从闭包中获取数据?我有一个全局变量在类之外声明,我试图从闭包或完成块中修改它;但是,它没有被修改,我不能从封闭内部获取数据。如何在swift中修改闭包中的全局变量?

var someGlobalVariable = 0 

    class someClass{ 


dispatch_async(dispatch_get_main_queue(), {() -> Void in 

         someGlobalVarible += 1 






        }) 
    } 

    print(someGlobalVariable) // returns 0 and not 1 
} 
+0

如果您发布了一个不适合您的示例,因为您可以修改外部变量而不做任何特殊处理,所以最好。你可以保留周期,但这是另一个问题。 –

+1

该示例不编译。 – zneak

+1

这不是有效的swift代码。我不推荐尝试你不明白的代码(这可怕的是破坏了),在做任何其他事情之前,先阅读Apple的Swift书。 –

如果我没记错的话,可以通过添加self来访问全局变量。到封闭内部的变量

self.someGlobalVariable 
+0

这里的问题是,它甚至不是有效的Swift ... –

您必须在变量更新后打印该变量。

dispatch_async(dispatch_get_main_queue(), {() -> Void in 

    someGlobalVarible += 1 
    print(someGlobalVariable) // will print 1 
}) 
}