1.defer
当前代码块执行到最后的时候回调这个函数
Alamofire.request(.GET, URL.absoluteString).responseData({ (req, response, res) -> Void in
defer {
executings[i] = false
}
switch res {
....
}
switch self.imageType(data) {
....
}
default:
....
}
}
})
在这里代码的执行顺序是首先进入闭包函数中,跳过defer中的内容,直接运行2个switch,当闭包函数中的内容运行完成之后最后返回开始的地方运行defer里面的内容
2.array.enumerate()
将数组中的值和index相分离用3的方法可以获取当前数组中的index坐标
3.for (i, URL) in saveImages.enumerate() {}
获取数组中的index坐标
for (i, URL) in saveImages.enumerate() {
Alamofire.request(.GET, URL.absoluteString).responseData({ (req, response, res) -> Void in
....
})
}
这里是要循环获取saveimages这个数组中的index坐标,saveImages.enumerate()这个函数就是将数组中的值和index坐标进行分离,循环返回一个元组(i, URL)这个元组中的i就是index
相对得到URL就是数组中的值
4.reverse(n)
倒序排列数组内的值
5.
while executings.filter({ $0 }).count > 0 {
NSRunLoop.currentRunLoop().runMode(NSDefaultRunLoopMode, beforeDate: NSDate(timeIntervalSinceNow:0.01))
}
这里重点想要说的是filter这个函数,作用是返回一个元素,这个元素必须符合后面闭包函数中的条件,这上面的函数条件是,在executings中true的count 如果大于0 为真,执行大括号中的代码。