我想了解如何传递给方法的参数可用于嵌套闭包。我很紧张,我写的东西并不总是有可用的原始参数。嵌套闭包中的方法参数
(这些都极大地简化的例子)
我有我写的指定闭包作为参数的方法:
func saveNameAndAgeToServer(serverParams: [String:String], completionHandler: (age: NSNumber) ->()) {
// Connect to a server
// POST a name and dob from serverParams
// Receives a current age in completion:
completionHandler(age: 22)
}
现在别的地方我创造另一种方法,也指定了一个闭合,有两个参数,并调用第一个函数:
func AwesomeFunc(name: String, dob: NSDate, completionHandler: (isOverTwentyOne: Bool) ->()) {
let formattedDob = NSDateFormatter().stringFromDate(dob)
saveNameAndAgeToServer([name:formattedDob]) { (age) ->() in
if (age as Int) >= 21 {
print("\(name) can have a beer.")
completionHandler(isOverTwentyOne: true)
} else {
print("\(name) is too young to drink, he can have a water.")
completionHandler(isOverTwentyOne: false)
}
}
}
我能够保证的参数(姓名和出生日期)传递到后者本功能离子总是可用?
我想问的是,saveNameAndAgeToServer闭包在内部运行的内存总是有AwesomeFunc的参数可用吗?我很确定这个功能全部被保留,而任何它所调用的功能都已完成,但会喜欢第二个意见。
我必须直通,没有在我的大脑任何坚持它已阅读,谢谢! –