我们可以在Objective-C如下声明块。
typedef void (^CompletionBlock) (NSString* completionReason);
我想这样做是迅速,它给错误。
func completionFunction(NSString* completionReason){ }
typealias CompletionBlock = completionFunction
错误:未申报“completionFunction”的使用
定义:
var completion: CompletionBlock = { }
这个怎么做?
更新:
据@ jtbandes的回答,我可以创建多个参数作为封样
typealias CompletionBlock = ( completionName : NSString, flag : Int) -> ()
该syntax for function types是(in) -> out
。
typealias CompletionBlock = (NSString?) -> Void
// or
typealias CompletionBlock = (result: NSData?, error: NSError?) -> Void
var completion: CompletionBlock = { reason in print(reason) }
var completion: CompletionBlock = { result, error in print(error) }
需要注意的是围绕着输入型括号只需要为雨燕3+。
Here约为迅速闭合真棒博客。
这里有些例子:
作为一个变量:
var closureName: (inputTypes) -> (outputType)
作为一个可选变量:
var closureName: ((inputTypes) -> (outputType))?
作为一个类型别名:
typealias closureType = (inputTypes) -> (outputType)