今天翻原来写过的代码发现有些看不懂了,比如@escaping这货我就看不太懂了,为什么会在传入一个方法的时候会给闭包加上这这个呢?
就例如如下代码:
func createViewModel(pay:@escaping (()->Void),change:@escaping (()->Void)) ->ViewModel {
}
可以注意到两个闭包都加了@escaping了,于是为了搞懂为什么会加这个就一层一层看代码,发现这个闭包被赋值到了一个ViewModel里,哦恍然大悟,终于想起来当初写这个代码的时候了,原来是因为需要将这个闭包作为一个延时调用的闭包来使用,为了不让它在这个方法返回的时候就被回收掉,所以加了@escaping后就不会在方法返回时被回收掉。