小编典典

swift:关闭声明就像块声明

swift

我们可以在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) -> ()

阅读 243

收藏
2020-07-07

共1个答案

小编典典

对函数类型的语法(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+开始,仅需在输入类型周围加上括号。

2020-07-07