如何在 iOS 中使用 Swift 声明块?

How to declare blocks using Swift in iOS?

我正在尝试将我的 Objective C 源代码转换为 swift,我搜索了很多以更改 Blocks 的语法。

这是我要切换到 Swift 的 Objective C 代码:

class.h 文件:

@property (nonatomic, copy) void (^tapBlock)(CGFlagsCell *);

+ (NSString *)cellIdentifier;

Class.m 文件:

self.tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapCell)];

- (void)didTapCell {
    self.tapBlock(self);
}

在Swift中,块、函数和闭包是一回事,它们具有相同的签名并且可以互换。

所以这会给你这样的东西

var  tapBlock: CGFlagsCell -> Void

可以在参数两边加上括号(如果只有一个则可选,如果有多个输入参数则推荐)和return类型(可选):

var tapBlock: (CGFlagsCell) -> (Void)

定义一个闭包变量 class :

var tapBlock: (parameterTypes) -> (returnType)

Swift 闭包是独立的功能块,可以在您的代码中传递和使用。 Swift 中的闭包类似于块 Objective-C