我们可以在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) -> ()
在对函数类型的语法是(in) -> out。
(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) }
请注意,从Swift 3+开始,仅需在输入类型周围加上括号。