【发布时间】:2018-12-18 08:41:16
【问题描述】:
我最近开始使用 Alamofire。我想使用 Alamofire 发送一个简单的 GET 请求:
import Alamofire
class Test{
var url:String = "www.github.com"
var i: Int = 1
func change(){
Alamofire.request(url, method:.get).responseString { response in
self.i += 1
print(self.i)
}
print(i)
}
}
我想在 Alamofire 函数调用中将 Test 类的属性 i 从 1 更改为 2。并在控制台上打印结果,看看会发生什么。我希望输出将是
2 2
但真正的输出是
1 2
!!我对这个结果感到很困惑。为什么不是2 2 或2 1 而是1 2?函数调用期间到底发生了什么?为什么属性不能更改?
【问题讨论】:
-
{ self.i 中的响应 += 1 print(self.i) }
-
这个关闭器将在一段时间后执行(当服务器响应时)
-
真正的输出是真的!!
-
请求异步工作。响应很晚才返回。
-
你需要了解
threading和asyncvssync