使用完成块外部参数集实现Swift功能

时间:2016-04-18 15:28:12

标签: swift swift2 swift2.2

据我所知,我们可以使用功能

func saveImage(imageType:imageType, thumb: UIImage, completion: CompletionHandler)
像这样:

imageSaver.saveImage(someType, thumb:image) { in
...
}

但实际上从Objective-C开始我认为block是一个参数,我应该像这样使用它:

imageSaver.saveImage(someType, thumb:image, { in
...
})

还有一个对我来说很有趣,因为Objective-C编码器将参数传递给函数:

所以,如果我想在savaImage函数中添加一些参数:

func saveImage(someInt:UInt, imageType:imageType, thumb: UIImage, completion: CompletionHandler)

然后我应该通过指定imageType名称来调用它。

imageSaver.saveImage(10, imageType:someType, thumb:image) { in
...
}

我想在Swift中我们有类似跳过函数定义的东西

Objective-C示例:

- (void)saveImage:(UIImage *)image withParams:(NSDictionary *)params

所以withParams有时可以在功能开始时跳过,正如我所理解的那样,这对我来说并不是很明显)

1 个答案:

答案 0 :(得分:2)

是的,这是区分闭包和函数的目的的一部分。它并没有真正定义函数之外的块,而是一些提高可读性的语法糖。

我建议您阅读:Closure Documentation