如何在swift中修改闭包内的全局变量?
如何在Swift中修改闭包内的值或至少从闭包中获取数据?我在类外部声明了一个全局变量,我试图在闭包或完成块中修改它;但是,它没有被修改,我无法从闭包中获取数据如何在swift中修改闭包内的全局变量?,swift,global-variables,closures,completionhandler,Swift,Global Variables,Closures,Completionhandler,如何在Swift中修改闭包内的值或至少从闭包中获取数据?我在类外部声明了一个全局变量,我试图在闭包或完成块中修改它;但是,它没有被修改,我无法从闭包中获取数据 var someGlobalVariable = 0 class someClass{ dispatch_async(dispatch_get_main_queue(), { () -> Void in someGlobalVarible += 1
var someGlobalVariable = 0
class someClass{
dispatch_async(dispatch_get_main_queue(), { () -> Void in
someGlobalVarible += 1
})
}
print(someGlobalVariable) // returns 0 and not 1
}
如果我没记错的话,您可以通过添加self来访问全局变量。到闭包内的变量
self.someGlobalVariable
您必须在变量更新后打印它
dispatch_async(dispatch_get_main_queue(), { () -> Void in
someGlobalVarible += 1
print(someGlobalVariable) // will print 1
})
}
最好是发布一个不适合您的示例,因为您可以修改外部变量,而无需执行任何特殊操作。您可以保留循环,但这是另一个问题。该示例无法编译。这不是有效的swift代码。我不建议你尝试你不懂的代码(这是非常糟糕的),在做任何其他事情之前先阅读苹果的Swift书籍。