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

时间:2015-04-26 12:11:08

标签: ios swift block uitapgesturerecognizer

我正在尝试将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);
}

2 个答案:

答案 0 :(得分:0)

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

所以这会给你这样的东西

var  tapBlock: CGFlagsCell -> Void

您可以在参数周围添加括号(如果只有一个,则为可选项,如果有多个输入参数则建议使用)和返回类型周围(可选):

var tapBlock: (CGFlagsCell) -> (Void)

答案 1 :(得分:0)

将闭包定义为类的变量:

var tapBlock: (parameterTypes) -> (returnType)

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