【发布时间】:2018-01-28 22:36:28
【问题描述】:
如果我快速运行以下代码,步骤 1.、2.、3. 和 4. 是否总是按此顺序执行(应该如此),或者如果循环,则存在异步执行的风险,排序等花费的时间比预期的要长?
// 1.
for i in self.filtered{
for j in i.calls {
var jj = j
jj.uid = i.uid
self.CallList.append(jj)
}
}
// 2.
self.CallList.sort { $0.priceHist > $1.priceHist }
// 3.
self.filtered = self.CallList
// 4.
self.tableView.reloadData()
【问题讨论】:
-
您在显示的代码中没有异步执行。这一切都会按顺序执行。顺便说一句,按照惯例,您的数组属性应该是
callList而不是CallList。 -
如果您使用异步执行,则只有异步执行的风险。你的问题不是很清楚。如果您发布的代码不使用任何内容,您为什么还要关心异步执行?
-
@Samah 是否为
@escaping并不能确定闭包是否异步执行。 -
所有的鸭子都是鸟,但不是所有的鸟都是鸭子。确实,异步执行的闭包是转义的,但并不是所有的转义封闭都是异步执行的。
-
不,这是我的意思。您建议 OP 可能认为传递给
sort的闭包正在转义,这意味着它是异步执行的。这是一个不正确的逻辑结论,就好像传递给sort的闭包是一只鸟,并因此确定它是一只鸭子。
标签: ios swift asynchronous